新项目在VS2017中能否将NuGet包存储在项目包目录中?

5

自动恢复NuGet虽然方便,但不安全。我之前把所有的程序包都检入了代码库中。这很容易,因为Visual Studio会在项目根目录下创建一个packages目录。

现在我发现我有一个

~/.nuget 

项目层次结构之外的目录,有没有办法恢复行为?也许在*.csproj文件中加入一个标志?


可能是如何在.Net Core项目中包含NuGet包?的重复问题。 - Martin Ullrich
啊,抱歉,这并不是真的。 - Martin Ullrich
我不知道NuGet还有“不安全”的恢复方式,事实上我的经验是相反的——如果未正确添加软件包内容(例如,dll被排除),则检入软件包可能会导致构建问题。 NuGet 本地缓存软件包,因此,只要您下载了软件包一次,离线恢复就应该可以正常工作。 - Justin
1
不安全的原因是,如果我在15年后需要从源代码重新构建以调试客户安装,我不希望发现我所依赖的特定版本的Nuget包已经从Nuget库中消失,或者Nuget库不再存在。一些公司有这样的支持合同。 - bradgonesurfing
1个回答

9
你可以在解决方案旁边的 NuGet.Config 文件中指定路径,将全局包文件夹的位置更改为解决方案本地位置(请注意,您必须重新打开解决方案才能生效)。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="globalPackagesFolder" value=".\packages" />
  </config>
</configuration>

有两个属性可以通过这种方式设置,以影响包恢复的位置。对于packages.config项目,可以设置repositoryPath属性;对于project.json和使用PackageReference的项目,可以设置globalPackagesFolder属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接