如何使我的 visual studio 解决方案在 teamcity 中使用最新版本的 nuget.exe

How to make my visual studio solution use the latest version of nuget.exe in teamcity

我有一个几年前写的 .net 网站,在 TeamCity 中构建时会导致错误。当 teamcity 进入第二个构建步骤,即站点的 csproj 文件的 MSBuild 时,我在尝试 运行 包恢复时收到此错误: "The '…' package requires NuGet client version '2.12' or above, but the current NuGet version is '2.8.60318.667'" 原因是此解决方案在其目录中包含 nuget.exe 文件,该文件的版本为 2.8.60318.667。我处理的其他 projects/websites 中没有 nuget.exe 文件,似乎正在 teamcity 中构建。

我需要 (1) 更新解决方案以便我可以删除 nuget.exe 文件,或者 (2) 使用最新版本,这有望解决 teamcity 问题。

当我用 nuget 的最新文件替换我的 nuget.exe 文件时,我在构建时收到一条错误消息: “1>D:\Sites\testSite.nuget\NuGet.targets(100,9):错误:找不到路径的一部分 'D:\Sites\testSite\ \packages\System.Security.AccessControl.4.4.0'。” 我认为在解决方案目录和包位置之间的配置文件中某处有一个 space,但我不确定在哪里看。有人可以帮忙吗?

我尝试从我的解决方案中删除 .nuget 文件夹,但我在构建时遇到错误。任何人都可以帮助我重新配置我的解决方案以在没有特定本地版本的 nuget 的情况下工作吗?

如果有人能以任何方式提供帮助,我将不胜感激,我对 visual studio 和 .net 的理解已经到了极限。

谢谢

山姆

您可以在 TeamCity 中安装多个版本的 Nuget 工具,并将任何一个设置为默认值

i.e 默认为 v4.4。

为此,请遵循 TeamCity 文档 link:TeamCity Doc

现在具体的构建步骤如果你想使用较低版本的nuget你可以选择不同版本的nugetinstaller/restore 如附图

我在替换 nuget.exe 文件时遇到的问题是由于我下载的文件版本所致。我使用了一个旧版本 (4.6.4),但在构建解决方案时,我没有遇到包路径中 space 的问题。

还有其他错误,但我现在已经解决了。