NuGet更新失败,似乎没有正确拿起VisualStudioVersion?

时间:2014-04-30 14:39:41

标签: c# msbuild visual-studio-2013 nuget

Windows 2012 R2构建服务器,TeamCity 8.1.2,nuget.exe 2.8.1

启用并测试包含常规完整构建清理然后进行NuGet还原的构建配置后,我们启用了增量VCS更新并在我们的构建配置上启用了NuGet更新。在NuGet更新期间,构建配置现在失败并显示此错误:

[Step 1/4] update: Updating NuGet packages for OurSolutionName.sln
[22:20:10]NuGet command: D:\TeamCity\buildAgent\tools\NuGet.CommandLine.DEFAULT.nupkg\tools\NuGet.exe update D:\TeamCity\buildAgent\work\52034b1c4c1ab5f5\OurSolutionName.sln -Verbose -RepositoryPath D:\TeamCity\buildAgent\work\52034b1c4c1ab5f5\packages
[22:20:10]Starting: D:\TeamCity\buildAgent\temp\agentTmp\custom_script9174264003705363137.cmd
[22:20:10]in directory: D:\TeamCity\buildAgent\work\52034b1c4c1ab5f5
[22:20:10]Scanning for projects...
[22:20:10]The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TypeScript\Microsoft.TypeScript.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  D:\TeamCity\buildAgent\work\52034b1c4c1ab5f5\proofs\MvcRouting\MvcRouting\MvcRouting.csproj
[22:20:11]Process exited with code 1
[22:20:11][Step 1/4] Step Update nuGet packages (NuGet Installer) failed

密钥是MSBuild路径中的\ v10.0 \。我查看了错误中提到的csproj文件,它使用标准兼容性逻辑来确定Visual Studio版本并适当地设置路径,如果VisualStudioVersion为null,则仅回落到10.0。我检查了解决方案文件,并确认VisualStudioVersion是12:

Microsoft Visual Studio Solution File, Format Version 12.00
Visual Studio 2013
VisualStudioVersion = 12.0.30110.0

为什么NuGet更新似乎没有找到正确的Visual Studio版本?

1 个答案:

答案 0 :(得分:0)

在Visual Studio中构建时,将定义VisualStudioVersion。在构建服务器上,默认情况下不会定义它。

您应该能够通过计算机或Team City中的环境变量进行设置。或者只是更新您的项目,以便它回退到版本12。

<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>

NuGet没有从解决方案本身读取任何内容。它只是将它用作基本目录,从中可以找到解决方案下面任何子目录中存在的任何packages.config文件。