ToolsVersion 設定のオーバーライド
更新 : 2007 年 11 月
/ToolsVersion スイッチ (短縮形は /tv) または $(ProjectToolsVersion) プロパティを使用することにより、プロジェクト ファイル内の ToolsVersion 設定をオーバーライドできます。これによって、同じソリューション内の他のプロジェクトとはツールセットのバージョンが異なるプロジェクトのビルドなどが可能になります。ToolsVersion タスク パラメータを使用して、MSBuild タスクの ToolsVersion をオーバーライドすることもできます。
ToolsVersion の詳細については、「MSBuild で特定の .NET Framework を対象にする」を参照してください。
コマンド ラインでのビルドでプロジェクトの ToolsVersion 設定をオーバーライドする
Visual Studio 2008 プロジェクトは通常、プロジェクト ファイルに指定された ToolsVersion でビルドされますが、コマンド ラインで /ToolsVersion (または /tv) スイッチを指定することによって、プロジェクト ファイルの ToolsVersion 値をオーバーライドし、すべてのプロジェクトとそのプロジェクト間依存関係を別のツールセットでビルドできます。次に例を示します。
C:\windows\microsoft.net\framework\v3.5>msbuild.exe someproj.proj /tv:3.5 /p:Configuration=Debug
この例では、すべてのプロジェクトが ToolsVersion 3.5 でビルドされます (後の「優先順位」を参照してください)。
コマンド ラインで /tv スイッチを使用するときには、特定のプロジェクトに $(ProjectToolsVersion) プロパティを指定し、ソリューション内の他のプロジェクトとは異なる ToolsVersion 値でビルドすることもできます。
MSBuild タスクの ToolsVersion パラメータを使用して ToolsVersion 設定をオーバーライドする
MSBuild タスクは、あるプロジェクトで別のプロジェクトをビルドするための主要な手段です。MSBuild タスクには、プロジェクトに指定された値とは異なる ToolsVersion でプロジェクトをビルドすることが可能となる省略可能なタスク パラメータ ToolsVersion が用意されています。このパラメータの使用例を次に示します。
<MSBuild Projects="MyProject1"
Targets="Build"
Properties="Configuration=Debug"
ToolsVersion="2.0">
<Output TaskParameter="TargetOutputs" ItemName="Outputs" />
</MSBuild>
優先順位
プロジェクトのビルドに使用される ToolsVersion は、次の優先順位に基づいて決定されます (順位の高いものから先に挙げています)。
プロジェクトのビルドに使用される MSBuild タスクの ToolsVersion 属性
msbuild.exe で使用される /tv スイッチ (外側の msbuild タスクと類似)
プロジェクト ファイル内の ToolsVersion 属性
構成ファイルに定義された既定のツール バージョン
レジストリに定義された既定のツール バージョン
1. ~ 3. は次のプロパティと同等です。
MSBuild タスクのプロパティ属性
msbuild.exe の /p: スイッチ
プロジェクト ファイル内のプロパティ タグ
コマンド ラインからビルドを実行するときに /ToolsVersion に値を指定しなかった場合、Visual Studio 2005 ソリューションは ToolsVersion 値 "2.0" でビルドされ、Visual Studio 2008 ソリューションは ToolsVersion 値 "3.5" でビルドされます。