VS2013 で作成された ASP.NET MVC Web アプリケーションがあり、CI に TeamCity 8.1 を使用しています。
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
10.0 ではなくバージョン 12.0 を使用しているため、間違ったパスでターゲットにアクセスしようとしています。
私のソリューション ファイルは次の行で始まります。
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
VS2013 で作成した MVC プロジェクトのプロジェクト ファイルには、VisualStudioVersion の this 宣言があります。
<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"