Nasıl Yapılır: Farklı Seçeneklerle Aynı Kaynak Dosyaları Derleme
Projeleri oluşturduğunuzda, sık sık aynı bileşenleri farklý yapý seçenekleri ile derleyin.Örneğin, hata ayıklama yapı simge bilgilerini veya sembol bilgisi yok ama en iyi duruma getirme etkin bir yayın yapısı oluşturabilirsiniz.Veya x 86 gibi belirli bir platformda çalıştırmak için bir proje oluşturabilirsiniz veya x64.Bu durumlarda, yapı seçeneklerin çoğu aynı kalır; yapı yapılandırmasını denetlemek için yalnızca birkaç seçenekleri değişir.İle MSBuild, özellikleri ve koşulları farklı yapı yapılandırmaları oluşturmak için kullanın.
Projeleri değiştirmek için özelliklerini kullanma
Property Kullanılan özelliklere iliþkin deðerleri ayarlamak için hata ayıklama yapı ve bir yayın gibi birkaç yapılandırmaları oluşturmak veya birkaç kez bir geçici dizin konumu gibi bir proje dosyası içinde başvurulan bir değişken tanımlar.Özellikler hakkında daha fazla bilgi için bkz: MSBuild Özellikleri.
Proje dosyasını değiştirmek zorunda kalmadan yapı yapılandırmasını değiştirmek için özelliklerini kullanın.Condition Özniteliği Property öğesi ve PropertyGroup öğe özelliklerinin değerini değiştirmenize olanak verir.Hakkında daha fazla bilgi için MSBuild koşulları, bkz: MSBuild Koşulları.
Bir grubu başka bir özelliğe dayalı özellikleri ayarlamak için
Kullanım bir Condition özniteliğini bir PropertyGroup öğesinde aşağıdakine benzer:
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Başka bir özelliğini temel alan bir özellik tanımlamak için
Kullanım bir Condition özniteliğini bir Property öğesinde aşağıdakine benzer:
<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>
Komut satırında özellikleri belirleme
Birden çok yapılandırmaları kabul etmek için proje dosyanızı yazıldıktan sonra projenizi derlediğiniz zaman bu yapılandırmaları değiştirme yeteneği olması gerekir.MSBuildkomut satırını kullanarak belirtilen özellikleri sağlayarak bu yeteneği sağlar /property veya /p geçin.
Komut satırında bir proje özelliğini ayarlamak için
Kullanım /property geçiş özelliğini ve özellik değeri.Örne?in:
msbuild file.proj /property:Flavor=Debug
- veya -
Msbuild file.proj /p:Flavor=Debug
Komut satırında birden fazla proje özelliği belirtmek için
Kullanmak /property veya /p özelliği ve özellik değerleri ile birden çok kez geçebilir veya kullanmak /property veya /p geçiş ve birden çok özellik noktalı virgülle (;) ayırın.Örne?in:
msbuild file.proj /p:Flavor=Debug;Platform=x86
- veya -
msbuild file.proj /p:Flavor=Debug /p:Platform=x86
Ortam değişkenleri, özellikleri olarak kabul edilir ve otomatik olarak eklenen MSBuild.Ortam değişkenlerini kullanma hakkında daha fazla bilgi için bkz: Nasıl Yapılır: Derlemede Ortam Değişkenlerini Kullanma.
Komut satırında belirtilen özellik değeri proje dosyasında aynı özelliğini ayarlamak ve proje dosyasındaki değer bir ortam değişkenine değer önceliklidir değeri daha önceliklidir.
Kullanarak bu davranışı değiştirebilirsiniz TreatAsLocalProperty proje etiketinde öznitelik.Bu öznitelik ile listelenen özellik adları, komut satırında belirtilen özellik değeri proje dosyasındaki değer önceliklidir değildir.Bu konudaki örnek bulabilirsiniz.
Örnek
Aşağıdaki kod örneği, "Hello World" projesi, hata ayıklama yapı ve yayın yapısı oluşturmak için kullanılan iki yeni özellik gruplarını içerir.
Bu projenin hata ayıklama sürümünü oluşturmak için aşağıdakileri yazın:
msbuild consolehwcs1.proj /p:flavor=debug
Bu proje perakende sürümü oluşturmak için aşağıdakileri yazın:
msbuild consolehwcs1.proj /p:flavor=retail
<Project DefaultTargets = "Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<!-- Sets the default flavor of an environment variable called
Flavor is not set or specified on the command line -->
<PropertyGroup>
<Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
</PropertyGroup>
<!-- Define the DEBUG settings -->
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
<DebugType>full</DebugType>
<Optimize>no</Optimize>
</PropertyGroup>
<!-- Define the RETAIL settings -->
<PropertyGroup Condition="'$(Flavor)'=='RETAIL'">
<DebugType>pdbonly</DebugType>
<Optimize>yes</Optimize>
</PropertyGroup>
<!-- Set the application name as a property -->
<PropertyGroup>
<appname>HelloWorldCS</appname>
</PropertyGroup>
<!-- Specify the inputs by type and file name -->
<ItemGroup>
<CSFile Include = "consolehwcs1.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run the Visual C# compilation using input files
of type CSFile -->
<CSC Sources = "@(CSFile)"
DebugType="$(DebugType)"
Optimize="$(Optimize)"
OutputAssembly="$(appname).exe" >
<!-- Set the OutputAssembly attribute of the CSC
task to the name of the executable file that is
created -->
<Output TaskParameter="OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
Aşağıdaki örnek, nasıl kullanılacağını gösterir TreatAsLocalProperty özniteliği.Color Özellik değeri olan Blue proje dosyasında ve Green komut satırında.İle TreatAsLocalProperty="Color" komut satırı özelliği proje etiketinde (Green) proje dosyasında tanımlanmış özellik geçersiz kılmaz (Blue).
Projeyi oluşturmak için aşağıdaki komutu girin:
msbuild colortest.proj /t:go /property:Color=Green
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0" TreatAsLocalProperty="Color">
<PropertyGroup>
<Color>Blue</Color>
</PropertyGroup>
<Target Name="go">
<Message Text="Color: $(Color)" />
</Target>
</Project>
<!--
Output with TreatAsLocalProperty="Color" in project tag:
Color: Blue
Output without TreatAsLocalProperty="Color" in project tag:
Color: Green
-->