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 は、次の優先順位に基づいて決定されます (順位の高いものから先に挙げています)。

  1. プロジェクトのビルドに使用される MSBuild タスクの ToolsVersion 属性

  2. msbuild.exe で使用される /tv スイッチ (外側の msbuild タスクと類似)

  3. プロジェクト ファイル内の ToolsVersion 属性

  4. 構成ファイルに定義された既定のツール バージョン

  5. レジストリに定義された既定のツール バージョン

1. ~ 3. は次のプロパティと同等です。

  • MSBuild タスクのプロパティ属性

  • msbuild.exe の /p: スイッチ

  • プロジェクト ファイル内のプロパティ タグ

コマンド ラインからビルドを実行するときに /ToolsVersion に値を指定しなかった場合、Visual Studio 2005 ソリューションは ToolsVersion 値 "2.0" でビルドされ、Visual Studio 2008 ソリューションは ToolsVersion 値 "3.5" でビルドされます。

参照

その他の技術情報

MSBuild の概念

特定の .NET Framework を対象とするビルド