我是否操作正确?使用集中式软件包文件夹还原Nuget包。

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包都被放置在解决方案文件夹中的“packages”文件夹中。我尝试多次删除此文件夹,但无论如何,NuGet都会重新创建它并填充它的包。
经过多次尝试和错误,我偶然发现了“NuGet.targets”中的元素,并注意到将其注释掉最终允许包被放置在我的项目根目录下的正确文件夹中。
以下是来自NuGet.targets的相关行。
<PackagesDir>$([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>

我的问题很简单,就是注释掉NuGet.targets文件中的PackagesDir元素是否是让我的nuget.config文件生效的预期方法,还是我错过了更明显的解决方案。
1个回答

3
您的问题涉及两个方面:
  • NuGet 存储包的位置?
  • 针对开放项目/解决方案的 NuGet 包还原
关于第一个问题:在您的 nuget.config 文件中设置 repositoryPath 键是指示 NuGet 将包提取到不同文件夹的正确方法。每当开发人员向您的项目添加包引用时,都会使用此设置。
对于 NuGet 包还原,此设置将被 NuGet.targets 中找到的设置所覆盖。此设置用于在构建解决方案时还原包。
如果您想同时使用包还原和自定义路径,则确实需要同时指定这两个设置。第一个设置用于开发人员,第二个设置用于包还原。

谢谢你的安心话,我会继续按照现有方式做下去。 - devuxer
天啊!我刚刚浪费了很多时间来解决这个问题...为什么NuGet要让你配置两次那个值?我真希望2.1版本的发布说明会指出这一点... - AllenSanborn

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