MSBuild 的条件构造

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 参考