3

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

这是文件:

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

我还在我的所有解决方案上启用了NuGet 包还原

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

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

这是 NuGet.targets 的相关行

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

我的问题只是注释掉 NuGet.targets 文件中的PackagesDir元素是否是让我的 nuget.config 文件被遵循的预期方法,或者我是否缺少更明显的解决方案。

4

1 回答 1

3

你的问题有两件事在起作用:

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

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

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

如果要使用包还原自定义路径,则确实必须同时指定两者。第一个用于您的开发人员,第二个用于包还原。

于 2012-12-31T09:59:22.880 回答