Jak: tworzenie tych samych plików źródłowych z różnych opcji
Tworzenie projektów, często skompilować te same składniki z budować różne opcje.Na przykład można utworzyć kompilacja do debugowania, informacje o symbolu lub wydanej kompilacji bez informacji o symbolu, ale z optymalizacje włączone.Można też jednak zbudować projekt na określonej platformy, takie jak x 86 lub x64.W tych przypadkach większość opcji kompilacji zmieniają się; tylko kilka opcji są zmieniane na konfiguracją kompilacji.Z MSBuild, użyj właściwości i warunki do tworzenia konfiguracji różnych kompilacji.
Aby zmodyfikować projektów za pomocą właściwości
Property Element definiuje zmienna, która odwołuje się w pliku projektu, takie jak lokalizacja katalogu tymczasowego, lub zestaw wartości dla właściwości, które są używane w różnych konfiguracjach, kompilacja do debugowania i uwolnienie budować.Aby uzyskać więcej informacji o właściwościach, zobacz Program MSBuild właściwości.
Właściwości można użyć do zmiany konfiguracji kompilacji bez konieczności zmiany pliku projektu.Condition Atrybut Property element i PropertyGroup element pozwala na zmianę wartości właściwości.Aby uzyskać więcej informacji o MSBuild warunki, zobacz Program MSBuild warunki.
Aby ustawić grupę właściwości na podstawie innej właściwości
Użycie Condition atrybutu w PropertyGroup element jest podobny do następującego:
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Aby zdefiniować właściwość, na podstawie innej właściwości
Użycie Condition atrybutu w Property element jest podobny do następującego:
<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>
Określanie właściwości w wierszu polecenia
Po pliku projektu jest napisane do akceptowania wielu konfiguracji, należy mieć możliwość zmiany tych konfiguracji, w każdym przypadku, gdy budowania projektu.MSBuildzapewnia taką możliwość, umożliwiając właściwości, aby określić przy użyciu wiersza polecenia /property lub /p przełączyć.
Aby ustawić właściwość projektu, w wierszu polecenia
Użycie /property przełączanie z właściwość i wartość właściwości.Na przykład:
msbuild file.proj /property:Flavor=Debug
- lub -
Msbuild file.proj /p:Flavor=Debug
Aby określić więcej niż jedną właściwość projektu, w wierszu polecenia
Użyj /property lub /p przełącznik wiele razy z właściwości i wartości właściwości lub skorzystać z jednej /property lub /p przełączanie i wielu właściwości należy oddzielić średnikami (;).Na przykład:
msbuild file.proj /p:Flavor=Debug;Platform=x86
- lub -
msbuild file.proj /p:Flavor=Debug /p:Platform=x86
Zmienne środowiskowe są także traktowane jako właściwości i są automatycznie włączone przez MSBuild.Aby uzyskać więcej informacji na temat używania zmiennych środowiskowych, zobacz Jak: używać zmiennych środowiskowych w kompilacji.
Wartość właściwość, która jest określona w wierszu polecenia mają pierwszeństwo przed dowolną wartość, która jest ustawiona dla tej samej właściwości w pliku projektu i wartości w pliku projektu mają pierwszeństwo przed wartość w zmiennej środowiskowej.
To zachowanie można zmienić za pomocą TreatAsLocalProperty atrybutu w znaczniku projektu.Dla nazwy właściwości, które są wyświetlane za pomocą tego atrybutu wartość właściwość, która jest określona w wierszu polecenia nie mają pierwszeństwo przed wartością w pliku projektu.Przykład można znaleźć w dalszej części tego tematu.
Przykład
Poniższy przykład kodu projektu "Hello World" zawiera dwie nowe grupy właściwości, które może być używane do tworzenia kompilacja do debugowania i budowania Release.
Tworzenie wersji tego projektu, należy wpisać:
msbuild consolehwcs1.proj /p:flavor=debug
Tworzenie wersji detalicznej tego projektu, należy wpisać:
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>
Poniższy przykład ilustruje sposób użycia TreatAsLocalProperty atrybut.Color Właściwość ma wartość Blue w pliku projektu i Green w wierszu polecenia.Z TreatAsLocalProperty="Color" w znaczniku projektu, a właściwość wiersza polecenia (Green) nie zastąpi właściwość, która jest zdefiniowana w pliku projektu (Blue).
Tworzenie projektu, wprowadź następujące polecenie:
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
-->