我在 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 创建一个环境变量并将其设置为 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"