When öğesi (MSBuild)
Öğesinin seçecek olası bir kod bloğunu Choose
belirtir.
<Proje><Seçimi><Ne Zaman><Seç> ... <Aksi takdirde><.> ..
Sözdizimi
<When Condition="'StringA'=='StringB'">
<PropertyGroup>... </PropertyGroup>
<ItemGroup>... </ItemGroup>
<Choose>... </Choose>
</When>
Öznitelikler ve öğeler
Öznitelikler, alt ve üst öğeler aşağıdaki bölümlerde açıklanmaktadır.
Özellikler
Öznitelik | Açıklama |
---|---|
Koşul | Gerekli öznitelik. Değerlendirilecek koşul. Daha fazla bilgi için bkz . Koşullar. |
Alt öğeleri
Öğe | Açıklama |
---|---|
Seçin | İsteğe bağlı öğe. Yürütülecek kodun bir bölümünü seçmek için alt öğeleri değerlendirir. Bir When öğede sıfır veya daha fazla Choose öğe olabilir. |
Itemgroup | İsteğe bağlı öğe. Kullanıcı tanımlı Öğe öğeleri kümesi içerir. Bir When öğede sıfır veya daha fazla ItemGroup öğe olabilir. |
Propertygroup | İsteğe bağlı öğe. Kullanıcı tanımlı Özellik öğeleri kümesi içerir. Bir When öğede sıfır veya daha fazla PropertyGroup öğe olabilir. |
Üst öğeler
Öğe | Açıklama |
---|---|
Choose öğesi (MSBuild) | Yürütülecek kodun bir bölümünü seçmek için alt öğeleri değerlendirir. |
Açıklamalar
Özniteliği true Condition
olarak değerlendirilirse, alt ItemGroup
öğe ve PropertyGroup
öğesinin When
öğeleri yürütülür ve sonraki When
tüm öğeler atlanır.
Choose
, When
ve Otherwise
öğeleri, bir dizi olası alternatifi yürütmek üzere kodun bir bölümünü seçmenin bir yolunu sağlamak için birlikte kullanılır. Daha fazla bilgi için bkz . Koşullu yapılar.
Örnek
Aşağıdaki proje, öğelerinde Choose
When
ayarlanacağı özellik değerleri kümesini seçmek için öğesini kullanır. Condition
Her iki When
öğenin öznitelikleri olarak değerlendirilirsefalse
, öğesindeki Otherwise
özellik değerleri ayarlanır. Örneği çalıştırırken, komut satırından msbuild myproj.proj -p:Configuration=Test;Platform=x86
gibi çeşitli özellik ayarlarını geçirmeyi deneyin ve çıkış yolunun nasıl göründüğüne bakın. Örnekte, hata ayıklama ve sürüm derlemeleri için gerçek platform adı yerine platformun bitliğine göre çıkış klasörü de dahil olmak üzere belirli özelliklerin ayarlanması ve 'Test' ve 'Perakende' yapılandırmalarının desteklenip 'Perakende' olarak 'Yayın' olarak ele alındığı varsayılır.
<Project>
<PropertyGroup>
<Configuration Condition="$(Configuration) == ''">Debug</Configuration>
<Platform Condition="$(Platform) == ''">x64</Platform>
</PropertyGroup>
<Choose>
<When Condition="$(Configuration)=='Test'">
<PropertyGroup>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<Choose>
<When Condition="$(Platform)=='x86' Or $(Platform) == 'ARM32'">
<PropertyGroup>
<OutputPath>.\bin\Test\32-bit\</OutputPath>
</PropertyGroup>
</When>
<When Condition="$(Platform)=='x64' Or $(Platform) == 'ARM64'">
<PropertyGroup>
<OutputPath>.\bin\Test\64-bit\</OutputPath>
</PropertyGroup>
</When>
<!-- For any other platform, use the platform name -->
<Otherwise>
<PropertyGroup>
<OutputPath>.\bin\Test\$(Platform)\</OutputPath>
</PropertyGroup>
</Otherwise>
</Choose>
</When>
<When Condition="$(Configuration)=='Retail' Or $(Configuration)=='Release'">
<PropertyGroup>
<DebugSymbols>false</DebugSymbols>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<Choose>
<When Condition="$(Platform)=='x86' Or $(Platform) == 'ARM32'">
<PropertyGroup>
<OutputPath>.\bin\Release\32-bit\</OutputPath>
</PropertyGroup>
</When>
<When Condition="$(Platform)=='x64' Or $(Platform) == 'ARM64'">
<PropertyGroup>
<OutputPath>.\bin\Release\64-bit\</OutputPath>
</PropertyGroup>
</When>
<!-- For any other platform, use the platform name -->
<Otherwise>
<PropertyGroup>
<OutputPath>.\bin\Release\$(Platform)\</OutputPath>
</PropertyGroup>
</Otherwise>
</Choose>
</When>
<!-- For any other configuration, use debug properties-->
<Otherwise>
<PropertyGroup>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<Choose>
<When Condition="$(Platform)=='x86' Or $(Platform)=='ARM32'">
<PropertyGroup>
<OutputPath>.\bin\$(Configuration)\32-bit\</OutputPath>
</PropertyGroup>
</When>
<When Condition="$(Platform)=='x64' Or $(Platform)=='ARM64'">
<PropertyGroup>
<OutputPath>.\bin\$(Configuration)\64-bit\</OutputPath>
</PropertyGroup>
</When>
</Choose>
</Otherwise>
</Choose>
<Target Name="ShowProperties">
<Message Text="DebugSymbols: $(DebugSymbols)"/>
<Message Text="Optimize: $(Optimize)"/>
<Message Text="DefineConstants: $(DefineConstants)"/>
<Message Text="OutputPath: $(OutputPath)"/>
</Target>
</Project>