次の方法で共有


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 が用意されています。次の例では、このパラメーターを使用する方法を示しています:

  1. という名前の 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>
    
  2. 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>
    
  3. コマンド プロンプトで次のコマンドを入力します:

    msbuild projectA.proj /t:go /toolsversion:3.5
    
  4. 次の出力が表示されます。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 を指定します:次のとおりです。

  1. プロジェクトのビルドに使用される MSBuild タスクの ToolsVersion の属性です (存在する場合)。

  2. msbuild.exe のコマンドで使用される /toolsversion (または) スイッチ /tv (存在する場合)。

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

  4. MSBuild.exe.config ファイルの既定のツール バージョン。

  5. レジストリに定義された既定のツール バージョン詳細については、「標準ツールセット構成とカスタム ツールセット構成」を参照してください。

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

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

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

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

参照

概念

MSBuild ツールセット (ToolsVersion)

標準ツールセット構成とカスタム ツールセット構成

その他の技術情報

MSBuild のマルチ ターゲットの概要

MSBuild の概念