NuGet 是 .NET 平台下的一个免费、开源的包管理开发工具。以windows 10为例,当我们不做任何配置时,其默认会从源中下载包到C盘下保存,例如我使得的用户名是Administrator,那么它会默认下载全局包到目录:C:\Users\Administrator\.nuget\packages\下。这个是由NuGet自己准定的和开发环境是framwork还是ASp.Net Core环境没有关系,同样这个全局变量我们是可以通过 C:\Users\Administrator\AppData\Roaming\NuGet下的NuGet.Config 来指定的。那么framwork项目和ASp.Net Core项目有什么区别呢?

我们的framwork项目默认情况下会从全局包的目录中复制一份到解决方案的根目录下然后再引入到项目中,使用的文件夹名是packages。但是到了ASP.Net Core中我们在解决方案的根目录下找不到packages这个目录了。取而代之的是直接引用了全局包的目录。这就是它们之间的不同,一个是从全局中复制一份到解决方案根目录一个是直接引用全局中的包资源。

那么我们有办法在ASP.Net Core中恢复到旧的方式吗?ASP.Net Core项目中指定包到解决方案的根目录。

方法如下:只需要在项目中指定包的目录就可以了,这里我们使用相通路径。编辑项目文件添加RestorePackagesPath项。原来这个名词叫包还原呀。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RestorePackagesPath>..\packages</RestorePackagesPath>
  </PropertyGroup>
</Project>

 

lebang2020.cn出品