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>