首页 文章

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

提问于
浏览
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 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 回答

  • 3

    您的问题中有两件事情在起作用:

    • NuGet在哪里存储包裹?

    • 打开项目/解决方案的NuGet包还原

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

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

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

相关问题