我这样做了吗?使用集中式包文件夹进行Nuget Package Restore

时间:2012-12-30 04:28:04

标签: visual-studio-2010 visual-studio nuget

我在我的项目根文件夹中放置了一个 nuget.config 文件,该文件指定了所有NuGet软件包应该用于我所有解决方案的位置。

这是文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="D:\Projects\Development\NuGet Packages" />
  </config>
</configuration>

我还在所有解决方案上启用了 NuGet Package Restore

当我第一次设置它时,nuget.config文件被忽略 - 所有NuGet包都被放在解决方案文件夹的“packages”文件夹中。我尝试多次删除这个文件夹,但是NuGet总是会重新创建它并用软件包填充它。

经过多次试验和错误后,我偶然发现了“NuGet.targets”中的<PackagesDir>元素,发现注释掉它最终允许将软件包放在项目根目录中的正确文件夹中。

这是NuGet.targets的相关行

<PackagesDir>$([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>

我的问题是,是否在NuGet.targets文件中注释掉PackagesDir元素是获取我的nuget.config文件的目标方法,还是我错过了一个更明显的解决方案。

1 个答案:

答案 0 :(得分:3)

您的问题有两个方面:

  • NuGet在哪里存储包裹?
  • 打开项目/解决方案的NuGet包还原

关于第一个:在nuget.config文件中设置 repositoryPath 键是指示NuGet从默认文件夹中提取不同文件夹中的包的正确方法。只要开发人员将包引用添加到项目中,就会使用此设置。

对于NuGet包还原,此设置将被您在 NuGet.targets 中找到的设置覆盖。在构建解决方案时还原包时使用此设置。

如果要使用包还原自定义路径,则必须同时指定两者。第一个用于开发者,第二个用于包恢复。