Nuget.config完全忽略了什么

时间:2019-06-24 21:19:42

标签: 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,单击Rich解决方案,选择“还原nuget软件包”,结果相同:将零个软件包还原到我指定的存储库路径。

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

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,但同样,零个软件包已还原到我指定的软件包文件夹中!

我真的希望任何人都能以一种神秘的方式告诉我这应该起作用。

2 个答案:

答案 0 :(得分:3)

当我在该子文件夹或以下的子文件夹中加载解决方案时,此nuget.config存储在E:上的子文件夹中对我来说是有效的。

<?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条目。

答案 1 :(得分:0)

尝试

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