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 时,要执行的代码块。

Project

MSBuild 项目文件必需的根元素。

When

指定可能的代码块以供 Choose 元素选择。

备注

通过将 ChooseWhenOtherwise 元素结合起来使用,可以从众多备选代码块中选择一个要执行的代码块。 有关更多信息,请参见 MSBuild 的条件构造

示例

下面的项目使用 Choose 元素选择 When 元素中要设置的一组属性值。 如果两个 When 元素的 Condition 特性的计算结果均为 false,将会设置 Otherwise 元素中的属性值。

<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 项目文件架构引用