MSBuild koşullu yapıları

MSBuild , Seç, Ne Zaman ve Değilse öğeleriyle işlemeye yönelik bir mekanizma sağlar.

Choose öğesini kullanma

öğesi, Choose bir öğe olarak değerlendirilene kadar yukarıdan aşağıya doğru test edilen öznitelikleri trueolan Condition bir dizi When öğe içerir. Birden When fazla öğe olarak değerlendirilirse true, yalnızca ilk öğe kullanılır. Bir Otherwise öğedeki hiçbir koşul olarak değerlendirilmezse, varsa bir When öğe değerlendirilir true.

Chooseöğeleri ve WhenOtherwise öğelerinin Projectalt öğeleri olarak kullanılabilir. When ve Otherwise öğelerinin ItemGroup, PropertyGroupveya Choose alt öğeleri olabilir.

Örnek

Aşağıdaki örnek, ve When öğelerini ya da işlemek için kullanırChoose. Projenin özellikleri ve öğeleri özelliğin değerine Configuration bağlı olarak ayarlanır.

<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>
    </Choose>
    <!-- Rest of Project -->
</Project>

Bu örnekte, derleyici sabitindeki DEFINED_CONSTANT bir koşul kullanılır. Bunlar özelliğine DefinedConstants dahildir. Normal ifade noktalı virgülle ayrılmış bir listede tam sabiti eşleştirmek için kullanılır.

<Choose>
   <When Condition="$([System.Text.RegularExpressions.Regex]::IsMatch(
         $(DefineConstants), '^(.*;)*DEFINED_CONSTANT(;.*)*$'))">
      <!-- When DEFINED_CONSTANT is defined. -->
   </When>
   <!-- other conditions -->
</Choose>

Ayrıca bkz.