Choose 元素 (MSBuild)

評估子項目,以選取一組要評估的 ItemGroup 項目和/或 PropertyGroup 項目。

<專案><選擇><當><選擇> ...<否則><選擇> ...

Choose 項目包含一系列的 When 項目與 Condition 屬性,其會按由上到下的順序進行測試,直到其中一個項目評估為 true 為止。 如果有一個以上的 When 項目評估為 true,則只會使用第一個項目。 如果 When 項目上沒有任何條件評估為 true,則會評估 Otherwise 項目 (如果有的話)。

語法

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

屬性和元素

下列章節說明屬性、子元素和父元素。

屬性

無。

子元素

元素 描述
Otherwise 選擇性項目。

指定只有當所有 When 項目的條件評估為 false 時,才需評估的程式碼 PropertyGroupItemGroup 項目的區塊。 Choose 項目中可能有零或一個 Otherwise 項目,而且它必須是最後一個項目。
時機 必要項目。

指定 Choose 項目可能要選取的程式碼區塊。 Choose 項目中可能有一或多個 When 項目。

父元素

元素 描述
Otherwise 指定如果所有 When 項目的條件評估為 false,才需執行的程式碼區塊。
計畫 MSBuild 專案檔的必要根項目。
時機 指定 Choose 項目可能要選取的程式碼區塊。

備註

ChooseWhenOtherwise 元素會一起用來提供選取一個程式碼區段的方式,以執行一些可能的替代方案。 如需詳細資訊,請參閱條件式建構

範例

下列專案使用 Choose 元素來選取 When 元素中要設定的屬性值集合。 如果兩個 When 元素的 Condition 屬性都評估為 false,則 Otherwise 元素中的屬性值已設定。

<Project
    xmlns="http://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>

另請參閱