Поделиться через


Элемент When (MSBuild)

Обновлен: Ноябрь 2007

Задает один из возможных блоков кода для выбора с помощью элемента Choose.

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

Атрибуты и элементы

В следующих разделах описываются атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут

Описание

Condition

Обязательный атрибут.

Проверяемое условие. Дополнительные сведения см. в разделе Условия MSBuild.

Дочерние элементы

Элемент

Описание

Choose

Необязательный элемент.

Вычисляет дочерние элементы с целью выбора одного блока кода для выполнения. Элемент When может содержать любое число элементов Choose, включая ноль.

ItemGroup

Необязательный элемент.

Этот элемент содержит набор определяемых пользователем элементов Item. Элемент When может содержать любое число элементов ItemGroup, включая ноль.

PropertyGroup

Необязательный элемент.

Этот элемент содержит набор определяемых пользователем элементов Property. Элемент When может содержать любое число элементов PropertyGroup, включая ноль.

Родительские элементы

Элемент

Описание

Элемент Choose (MSBuild)

Вычисляет дочерние элементы с целью выбора одного блока кода для выполнения.

Заметки

Если значение атрибута Condition оказывается равным true, выполняются дочерние элементы ItemGroup и PropertyGroup элемента When, а все последующие элементы When пропускаются.

Элементы Choose, When и Otherwise можно использовать совместно, чтобы обеспечить возможность выбора и выполнения одного из нескольких возможных фрагментов кода. Дополнительные сведения см. в разделе Условные конструкции MSBuild.

Пример

В приведенном ниже проекте элемент Choose используется для выбора устанавливаемого набора значений свойств в элементах When. Если атрибутам Condition обоих элементов When оказывается равным 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