Freigeben über


When-Element (MSBuild)

Gibt einen möglichen Codeblock an, den das Choose-Element auswählen kann.

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

Attribute und Elemente

In den folgenden Abschnitten werden Attribute, untergeordnete Elemente und übergeordnete Elemente beschrieben.

Attribute

Attribute

Beschreibung

Condition

Erforderliches Attribut.

Die auszuwertende Bedingung. Weitere Informationen finden Sie unter MSBuild-Bedingungen.

Untergeordnete Elemente

Element

Beschreibung

Choose

Optionales Element

Wertet untergeordnete Elemente aus, um einen Codeabschnitt auszuwählen, der ausgeführt werden soll. Es kann keine oder mehrere Choose-Elemente in einem When-Element geben.

ItemGroup

Optionales Element.

Enthält benutzerdefinierte Item-Elemente. Es kann keine oder mehrere ItemGroup-Elemente in einem When-Element geben.

PropertyGroup

Optionales Element.

Enthält benutzerdefinierte Property-Elemente. Es kann keine oder mehrere PropertyGroup-Elemente in einem When-Element geben.

Übergeordnete Elemente

Element

Beschreibung

Choose-Element (MSBuild)

Wertet untergeordnete Elemente aus, um einen Codeabschnitt auszuwählen, der ausgeführt werden soll.

Hinweise

Wenn das Condition-Attribut true ergibt, werden das untergeordnete ItemGroup-Element und das untergeordnete PropertyGroup-Element des When-Elements ausgeführt, und alle folgenden When-Elemente werden übersprungen.

Das Choose-Element, das When-Element und das Otherwise-Element werden zusammen verwendet, um die Auswahl eines auszuführenden Codeabschnitts aus verschiedenen Alternativen zu ermöglichen. Weitere Informationen hierzu finden Sie unter MSBuild Conditional Constructs.

Beispiel

Im folgenden Projekt wird das Choose-Element verwendet, um die Eigenschaftswerte in den When-Elementen auszuwählen, die festgelegt werden sollen. Wenn die Condition-Attribute beider When-Elemente false ergeben, werden die Eigenschaftswerte im Otherwise-Element festgelegt.

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

Siehe auch

Referenz

MSBuild Conditional Constructs

Konzepte

Referenz zum MSBuild-Projektdateischema