MSBuild 的条件构造

更新:2007 年 11 月

MSBuild 使用 ChooseWhenOtherwise 元素提供一种处理 either/or 的机制。

使用 Choose 元素

Choose 元素包含一系列具有 Condition 属性的 When 元素,将按从上至下的顺序测试这些元素,直到某个元素的计算结果为 true 为止。如果不止一个 When 元素的计算结果为 true,将仅仅使用第一个元素。如果 When 元素中没有一个条件的计算结果为 true,将计算 Otherwise 元素(如果存在的话)。

Choose 元素可以用作 ProjectWhenOtherwise 元素的子元素。WhenOtherwise 元素可以有 ItemGroupPropertyGroupChoose 子元素。

示例

下面的示例对 either/or 处理使用 ChooseWhen 元素。项目的属性和项是根据 Configuration 属性的值设置的。

<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>
    </Choose>
    <!-- Rest of Project -->
</Project>

请参见

参考

Choose 元素 (MSBuild)

When 元素 (MSBuild)

Otherwise 元素 (MSBuild)

其他资源

MSBuild 参考