Choose 項目 (MSBuild)

評估子項目以選擇一組要評估的 ItemGroup 項目和 (或) PropertyGroup 項目。

<Choose>
    <When Condition="'StringA'=='StringB'">... </When>
    <Otherwise>... </Otherwise>
</Choose>

屬性和項目

下列章節會說明屬性、子項目和父項目。

屬性

無。

子項目

項目

描述

Otherwise

選擇性項目。

指定如果所有 When 項目的條件都評估為 false 時,PropertyGroupItemGroup 項目所要評估的程式碼區塊。 在 Choose 項目中可以有零或一個 Otherwise 項目,而且此項目必須是最後的項目。

When

必要項目。

指定可能的程式碼區塊,供 Choose 項目選取。 在 Choose 項目中可以有零或多個 When 項目。

父項目

項目

描述

Otherwise

指定如果所有 When 項目的條件都評估為 false 時,所要執行的程式碼區塊。

專案

MSBuild 專案檔的必要根項目。

When

指定可能的程式碼區塊,供 Choose 項目選取。

備註

ChooseWhenOtherwise 項目會一起使用,以便從數個可能的選擇項目中,選取一個要執行的程式碼區段。 如需詳細資訊,請參閱 MSBuild 條件式建構

範例

下列專案使用 Choose 項目,選取 When 項目中要設定的屬性值集。 如果兩個 When 項目的 Condition 屬性 (Aattribute) 都評估為 false,則表示 Otherwise 項目中的屬性 (Property) 值已設定。

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >
    <PropertyGroup>
        <Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
        <OutputType>Exe</OutputType>
        <RootNamespace>ConsoleApplication1</RootNamespace>
        <AssemblyName>ConsoleApplication1</AssemblyName>
        <WarningLevel>4</WarningLevel>
    </PropertyGroup>
    <Choose>
        <When Condition=" '$(Configuration)'=='debug' ">
            <PropertyGroup>
                <DebugSymbols>true</DebugSymbols>
                <DebugType>full</DebugType>
                <Optimize>false</Optimize>
                <OutputPath>.\bin\Debug\</OutputPath>
                <DefineConstants>DEBUG;TRACE</DefineConstants>
            </PropertyGroup>
            <ItemGroup>
                <Compile Include="UnitTesting\*.cs" />
                <Reference Include="NUnit.dll" />
            </ItemGroup>
        </When>
        <When Condition=" '$(Configuration)'=='retail' ">
            <PropertyGroup>
                <DebugSymbols>false</DebugSymbols>
                <Optimize>true</Optimize>
                <OutputPath>.\bin\Release\</OutputPath>
                <DefineConstants>TRACE</DefineConstants>
            </PropertyGroup>
        </When>
        <Otherwise>
            <PropertyGroup>
                <DebugSymbols>true</DebugSymbols>
                <Optimize>false</Optimize>
                <OutputPath>.\bin\$(Configuration)\</OutputPath>
                <DefineConstants>DEBUG;TRACE</DefineConstants>
            </PropertyGroup>
        </Otherwise>
    </Choose>
    <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>

請參閱

參考

MSBuild 條件式建構

概念

MSBuild 專案檔案結構描述參考