ToolsVersion 設定のオーバーライド
/ToolsVersion スイッチ (短縮形はの /tv) を使用するか、$(ProjectToolsVersion) のプロパティを設定してプロジェクト ファイルのツールセットを選択できます。これは、他のプロジェクトとは異なるツールセットのバージョンのを使用してソリューションのプロジェクトをビルドできます。また ToolsVersion のタスク パラメーターをに設定すると、MSBuild タスクによって使用されるバージョンのツールをオーバーライドできます。
コマンド ラインでのビルドでプロジェクトの ToolsVersion 設定をオーバーライドする
Visual Studio プロジェクトがプロジェクト ファイルに指定された ToolsVersion でビルドがその値をオーバーライドし、と他のツールセットのプロジェクトおよびプロジェクト間の依存関係の一部をコマンド ラインでビルドの /ToolsVersionの (または、/tv) スイッチを使用できます。次に例を示します。
msbuild.exe someproj.proj /tv:3.5 /p:Configuration=Debug
この例では、すべてのプロジェクトが ToolsVersion 3.5 でビルドされます (後の「優先順位」を参照してください)。
コマンド ラインで /tv スイッチを使用するときには、特定のプロジェクトに $(ProjectToolsVersion) プロパティを指定し、ソリューション内の他のプロジェクトとは異なる ToolsVersion 値でビルドすることもできます。
MSBuild タスクの ToolsVersion パラメーターを使用して ToolsVersion 設定をオーバーライドする
MSBuild タスクは、あるプロジェクトで別のプロジェクトをビルドするための主要な手段です。MSBuild タスクには、プロジェクトに指定された値とは異なる ToolsVersion でプロジェクトをビルドすることが可能となる省略可能なタスク パラメーター ToolsVersion が用意されています。次の例では、このパラメーターを使用する方法を示しています:
という名前の projectA.proj 次のコードを含むファイルを作成する:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <Target Name="go" > <Message Text="projectA.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> <MSBuild Projects="projectB.proj" ToolsVersion="2.0" Targets="go" /> </Target> </Project>
projectB.proj と、次のコードを含む、別のファイルを作成する:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <Target Name="go"> <Message Text="projectB.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> </Target> </Project>
コマンド プロンプトで次のコマンドを入力します:
msbuild projectA.proj /t:go /toolsversion:3.5
次の出力が表示されます。projectAのは、コマンド ラインで設定 /toolsversion:3.5 は Project のタグで設定 ToolsVersion=4.0 をオーバーライドします。
ProjectB は projectAのタスクによって呼び出されます。projectBの ToolsVersion の他の設定をオーバーライドできます。そのタスクに ToolsVersion=2.0があります。
Output: projectA.proj MSBuildToolsVersion: 3.5 MSBuildToolsPath: C:\Windows\Microsoft.NET\Framework\v3.5 projectB.proj MSBuildToolsVersion: 2.0 MSBuildToolsPath: C:\Windows\Microsoft.NET\Framework\v2.0.50727
優先順位
優先順位は、高いものから低いものへプロジェクトのビルドに使用される ToolsVersion を指定します:次のとおりです。
プロジェクトのビルドに使用される MSBuild タスクの ToolsVersion の属性です (存在する場合)。
msbuild.exe のコマンドで使用される /toolsversion (または) スイッチ /tv (存在する場合)。
プロジェクト ファイルの プロジェクト の要素の ToolsVersion の属性。
MSBuild.exe.config ファイルの既定のツール バージョン。
レジストリに定義された既定のツール バージョン詳細については、「標準ツールセット構成とカスタム ツールセット構成」を参照してください。
1. ~ 3. は次のプロパティと同等です。
MSBuild タスクのプロパティ属性
msbuild.exe の /p: スイッチ
プロジェクト ファイル内のプロパティ タグ