Elemento When (MSBuild)

Aggiornamento: novembre 2007

Specifica un blocco di codice selezionabile dall'elemento Choose.

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

Attributi ed elementi

Nelle sezioni riportate di seguito vengono illustrati attributi, elementi figlio e padre.

Attributi

Attributo

Descrizione

Condition

Attributo obbligatorio.

Condizione da valutare. Per ulteriori informazioni, vedere Condizioni di MSBuild.

Elementi figlio

Elemento

Descrizione

Choose

Elemento facoltativo.

Valuta gli elementi figlio per selezionare una sezione di codice da eseguire. In un elemento When possono essere presenti zero o più elementi Choose.

ItemGroup

Elemento facoltativo.

Contiene un insieme di elementi Item definiti dall'utente. In un elemento When possono essere presenti zero o più elementi ItemGroup.

PropertyGroup

Elemento facoltativo.

Contiene un insieme di elementi Property definiti dall'utente. In un elemento When possono essere presenti zero o più elementi PropertyGroup.

Elementi padre

Elemento

Descrizione

Elemento Choose (MSBuild)

Valuta gli elementi figlio per selezionare una sezione di codice da eseguire.

Note

Se l'attributo Condition restituisce true, gli elementi figlio ItemGroup e PropertyGroup dell'elemento When vengono eseguiti e tutti i successivi elementi When vengono ignorati.

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

Esempio

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

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

Vedere anche

Concetti

Riferimenti dello schema del file di progetto MSBuild

Riferimenti

Costrutti condizionali di MSBuild