我在VS2013中创建了一个ASP.NET MVC Web应用程序,并使用TeamCity 8.1进行CI。
我正在尝试在使用TeamCity中的Nuget Pack构建步骤构建Visual Studio解决方案之前恢复我的Nuget包,并收到此错误:
The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets"
was not found. Confirm that the path in the <Import> declaration is correct
它试图访问错误路径中的目标,因为我使用的是版本12.0而不是10.0。
我的解决方案文件以以下行开头:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
我在VS2013中创建的MVC项目的项目文件有一个VisualStudioVersion的声明
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
...
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
我认为VisualStudioVersion的声明是恢复Nuget包的构建步骤访问错误文件夹的原因。但是我不确定VisualStudioVersion属性的条件是什么评估的。
我尝试为VisualStudioVersion创建一个Environment变量并将其设置为12.0,但这不起作用。
奇怪的是,如果我在TeamCity中禁用Nuget Pack步骤,构建步骤似乎找到了正确的路径
Starting: C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.MsBuildBootstrap.exe /workdir:C:\TeamCity\buildAgent\work\17b24c83f45b721d "/msbuildPath:C:\Program Files (x86)\MSBuild\12.0\bin\MSBuild.exe"