我在我的项目根文件夹中放置了一个 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文件的目标方法,还是我错过了一个更明显的解决方案。
答案 0 :(得分:3)
您的问题有两个方面:
关于第一个:在nuget.config文件中设置 repositoryPath 键是指示NuGet从默认文件夹中提取不同文件夹中的包的正确方法。只要开发人员将包引用添加到项目中,就会使用此设置。
对于NuGet包还原,此设置将被您在 NuGet.targets 中找到的设置覆盖。在构建解决方案时还原包时使用此设置。
如果要使用包还原和自定义路径,则必须同时指定两者。第一个用于开发者,第二个用于包恢复。