Elemento Choose (MSBuild)

Valuta gli elementi figlio per selezionare un set di elementi ItemGroup e/o di elementi PropertyGroup da valutare.

<Scegli progetto><quando><scegli> ... <><In caso contrario><, scegliere> ...

L'elemento Choose contiene una serie di When elementi con Condition attributi testati in ordine dall'alto verso il basso fino a quando non si restituisce true. Se più di un When elemento restituisce true, viene usato solo il primo elemento. Un Otherwise elemento, se presente, verrà valutato se nessuna condizione in un When elemento restituisce true.

Sintassi

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

Attributi ed elementi

Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.

Attributi

Nessuno.

Elementi figlio

Elemento Descrizione
Otherwise Elemento facoltativo.

Specifica gli elementi PropertyGroup e ItemGroup del blocco di codice da valutare se le condizioni di tutti gli elementi When restituiscono false. In un elemento Otherwise può essere presente al massimo un elemento Choose ed è necessario che sia l'ultimo.
Quando Elemento obbligatorio.

Specifica un blocco di codice selezionabile dall'elemento Choose. In un elemento When possono essere presenti uno o più elementi Choose.

Elementi padre

Elemento Descrizione
Otherwise Specifica il blocco di codice da eseguire se le condizioni di tutti gli elementi When restituiscono false.
Progetto Elemento radice obbligatorio di un file di progetto MSBuild.
Quando Specifica un blocco di codice selezionabile dall'elemento Choose.

Osservazioni:

Gli elementi Choose, When e Otherwise vengono usati insieme per consentire di selezionare una sezione di codice da eseguire tra diverse alternative. Per altre informazioni, vedere Costrutti condizionali di MSBuild.

Esempio

Nel progetto riportato di seguito l'elemento Choose viene usato per selezionare il set di valori delle proprietà da impostare negli elementi When. Se gli attributi Condition di entrambi gli elementi When restituiscono false, vengono impostati i valori delle proprietà dell'elemento Otherwise.

<Project
    xmlns="http://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>

Vedi anche