如何为TeamCity NuGet安装程序设置MSBuild验证?

时间:2017-06-13 13:02:09

标签: msbuild nuget teamcity .net-core

我正在尝试使用NuGet Installer TeamCity构建步骤为.NET Core解决方案恢复NuGet包。 'MSBuild自动检测'选择MSBuild v4.0而不是.NET Core项目所需的v15.0:

[15:41:53][restore] Starting NuGet.exe 4.1.0.2450 from C:\TeamCity\buildAgent\tools\NuGet.CommandLine.4.1.0\tools\NuGet.exe
[15:41:53][restore] MSBuild auto-detection: using msbuild version '4.0' from 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319'.
[15:41:53][restore] Nothing to do. None of the projects in this solution specify any packages for NuGet to restore.
[15:41:53][restore] Process exited with code 0

这会导致在程序包恢复后运行的“MSBuild”TeamCity步骤中出现编译错误:

Assets file 'C:\TeamCity\...\MyProj\obj\project.assets.json' not found.
Run a NuGet package restore to generate this file.

对于'MSBuild'TeamCity步骤,我按照此SO answer中的说明手动选择MSBuildTools版本: enter image description here

但我没有设法找到'NuGet Installer'步骤的类似设置。我错过了什么吗?

4 个答案:

答案 0 :(得分:4)

我设法克服了这个问题,指定了-MSBuildPath command line parameter

enter image description here

答案 1 :(得分:2)

正如@PeterLai所说,nuget版本是正确的选择。

所以,因为我在这里遇到了同样的问题,我在Teamcity / Administration / Integrations / Tools中更新了Nuget。

我从3.4.3移到4.6.2,只是重建。

enter image description here

现在它找到我的视觉工作室2017 msbuild,版本15!

之前:

NuGet command: D:\...\NuGet.CommandLine.3.4.3\tools\NuGet.exe restore D:\...\proj.sln
...
MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.

在:

NuGet command: D:\...\NuGet.CommandLine.4.6.2\tools\NuGet.exe restore D:\...\proj.sln
...
MSBuild auto-detection: using msbuild version '15.5.180.51428' from 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin'.

答案 2 :(得分:1)

2件事,

可能是因为它从C:\ TeamCity \ buildAgent \ tools \ NuGet.CommandLine.4.1.0 \ tools \ NuGet.exe中的Starting NuGet.exe 4.1.0.2450文件夹运行它,而不是源代码目的就像你期望的那样。

您的项目中是否有package.config文件?

答案 3 :(得分:0)

如果您只使用.NET Core / .NET Standard项目(“基于SDK的”csproj),则无需使用nuget.exe进行还原,但可以创建一个调用{{1}的msbuild调用目标:

Restore

如果他们使用msbuild /t:Restore the.sln 包管理格式,这也适用于非核心/标准项目(经典csproj): enter image description here