c# - 无论如何完全忽略 Nuget.config

标签 c# visual-studio nuget visual-studio-2019

我想指定包在 nuget 恢复中的存储位置。当然,这在 MSDN 上有记录,当然,它永远行不通....

我有一个测试方案存放在D:\Development\Test\Test.sln

根据他们的 documentation ,nuget 不再查看解决方案文件夹内的 .nuget 文件夹。相反,它现在会在解决方案文件夹中查找,或在链的更上层查找。所以我可以将 nuget.config 存储在

  • D:\Development\Test\Nuget.Config
  • D:\Development\Nuget.Config
  • D:\Nuget.Config

好吧,我尝试了所有这三个,并且重新启动 Visual Studio 的次数比我愿意计算的要多。

我还读到,他们在实现 nuget 时做得很糟糕,nuget.config 中的拼写错误导致默默地忽略 nuget 文件。所以我想,一定是这样,我打错了。所以我下载了 nuget.exe(最新的稳定版 5.0.2)并发出命令来配置 nuget 以将我的包放在我想要的位置。

nuget config -set repositoryPath=D:\Development\test\packages -configfile ..\nuget.config

XML 是这样的:

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

使用 nuget.exe 配置 Nuget.config 后,我再次尝试了以前的任何位置(D:\;D:\Development\;D:Development\Test),每次更改位置都重新启动 visual studio,richt click 解决方案,选择'restore nuget packages',结果相同:零个包被恢复到我指定的存储库路径。

因此,作为最后一次尝试,我尝试从命令行进行 nuget 恢复:

D:\Development\test>nuget restore test.sln -ConfigFile ..\nuget.config
MSBuild auto-detection: using msbuild version '16.1.76.45076' from 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\bin'.
Restoring packages for D:\Development\test\test\test.csproj...
Restoring packages for D:\Development\test\ClassLibrary1\ClassLibrary1.csproj...
Committing restore...
Committing restore...
Generating MSBuild file D:\Development\test\ClassLibrary1\obj\ClassLibrary1.csproj.nuget.g.props.
Generating MSBuild file D:\Development\test\test\obj\test.csproj.nuget.g.props.
Writing assets file to disk. Path: D:\Development\test\ClassLibrary1\obj\project.assets.json
Writing assets file to disk. Path: D:\Development\test\test\obj\project.assets.json
Restore completed in 603,63 ms for D:\Development\test\ClassLibrary1\ClassLibrary1.csproj.
Restore completed in 603,6 ms for D:\Development\test\test\test.csproj.

NuGet Config files used:
    D:\Development\nuget.config

它甚至提到它使用了我的 nuget.config,但同样,在我指定的包文件夹中恢复了零包!

我真的希望有人能告诉我这应该以什么神秘的方式工作。

最佳答案

nuget.config存储在 E: 上的子文件夹中当我在该子文件夹或以下文件夹中加载解决方案时,在 Visual Studio 2019 中为我工作:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="D:\NugetPackages" />
    <add key="globalPackagesFolder" value="D:\NugetPackages" />
    <add key="dependencyVersion" value="Highest" />
  </config>
</configuration>

主要区别在于我还有一个 globalPackagesFolder指向同一文件夹的条目 - 根据 the docs此设置由“仅使用 PackageReference 的项目”使用。我建议你尝试添加一个 globalPackagesFolder条目。

关于c# - 无论如何完全忽略 Nuget.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56744104/

相关文章:

c# - MSBuild 在 _CopyOutOfDateSourceItemsToOutputDirectory 期间复制依赖项目文件

visual-studio - 如何在 Visual Studio 中静态链接 VCPKG 生成的 .lib 文件

powershell - 如何通过 PowerShell 获取 NuGet 输出目录?

c# - 在 C# 中使用命名空间

c# - 如何在 javascript 中显示 C# 的日期时间?

c# - ReaderWriterLockSlim 扩展方法性能

azure - Visual Studio 如何选择 Azure Functions Tools 版本?

nuget - 无法删除服务器上的 NuGet 包

c# - 无法添加对已安装 NuGet 包的引用?

c# - ReSharper 7 自动完成在键入 "No suggestions"后错误地显示 "this."