web-dev-qa-db-ja.com

VS2013のみを含むTFSビルドサーバーでVS2013をビルドする

開発チームのVS2010からVS2013への移行をサポートするために、新しいビルドサーバーをセットアップしています。 TFSサーバーはまだ移行していないため、新しいビルドサーバーは2つのエージェントを持つVS2010ビルドコントローラーとして設定されています。また、マシンにVS2013をインストールしました(スレッジハンマーアプローチ)。

すべてのコードはターゲット.Net 4.5.1に移行されており、開発者のワークステーションで問題なくコンパイルされます。

Webプロジェクトを含むソリューションを除いて、ほとんどのソリューションは問題なくビルドできます。これらのプロジェクトは不満を持っています:

インポートされたプロジェクト「C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets」が見つかりませんでした。

インポートされたプロジェクトは、次の2行を通じてビルドプロセスでVisualStudioVersion変数を使用しています。

<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
...
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

このページによると:

http://msdn.Microsoft.com/en-us/library/vstudio/bb383796.aspx

4.5と4.5.1の両方のターゲットで「11.0」に設定されます。ただし、ビルドマシンには上記のパスの12.0バージョンしかありません。

「C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets "

これらの同じ.csproj行は、まったく新しいVS2013プロジェクトで使用されているようです。そのため、ビルドマシンでこれがどのように正しく解決されるかはわかりません。

21
Piers Lawson

Vs2012がcsprojファイルにこの部分を追加したことが原因です。

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>

安全にその部分を削除すると、ソリューションが構築されます。

.projファイルが<Project ToolsVersion="12"で始まることを確認する必要があります。そうしないと、次にVisual Studio 2010でプロジェクトを開いたときに、削除されたノードが再び追加されます。

それ以外の場合、webdeployを使用する必要がある場合、またはビルドサーバーを使用する場合、上記のソリューションは機能しませんが、ビルドスクリプトでVisualStudioVersionプロパティを指定できます。

msbuild myproject.csproj /p:VisualStudioVersion=12.0

または、ビルド定義を編集します。

edit build definition to specify the <code>VisualStudioVersion</code> property

26
giammin

あなたができることは、ビルドサーバーでmsbuildを実行するときにVisualStudioVersionプロパティを指定することです

msbuild myproject.csproj /p:VisualStudioVersion=12.0
15
Geoffrey Samper

私は同様の問題に遭遇しました...そしてここに理由があります。 VS2013以降、MSBuildは.NET FrameworkではなくVisual Studioの一部として出荷されます。これを参照してください msdn blog

したがって、[正しい方法]で問題を解決するには、「C:\ Windows\Microsoft.NET\Framework64\v4」ではなく、「C:\ Program Files(x86)\ MSBuild\12.0\bin \」からMSBuildを使用する必要がありました。 .0.30319\"

5
tokafew420

ビルドテンプレートを編集して、ツールバージョンを修正できるはずです。

テンプレートの.xamlファイルを開き、「MsBuild for Project」アクティビティを見つけます。プロパティには、ツールのバージョンを設定するオプションがあります。必要に応じて、テンプレートレベルのプロパティを作成して、構成を容易にすることができます。

enter image description here

2
jessehouwing