Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas kompilowania projektów często kompilujesz te same składniki z różnymi opcjami kompilacji. Możesz na przykład utworzyć kompilację debugowania z informacjami o symbolach lub kompilacją wydania bez informacji o symbolach, ale z włączonymi optymalizacjami. Możesz też utworzyć projekt do uruchomienia na określonej platformie, takiej jak x86 lub x64. We wszystkich tych przypadkach większość opcji kompilacji pozostanie taka sama; tylko kilka opcji jest zmienianych w celu kontrolowania konfiguracji kompilacji. Program MSBuild używa właściwości i warunków do tworzenia różnych konfiguracji kompilacji.
Używanie właściwości do kontrolowania ustawień kompilacji
Element Property
definiuje zmienną, do którego odwołuje się kilka razy w pliku projektu, na przykład lokalizację katalogu tymczasowego lub ustawia wartości właściwości używanych w kilku konfiguracjach, takich jak kompilacja debugowania i kompilacja wydania. Aby uzyskać więcej informacji o właściwościach, zobacz Właściwości programu MSBuild.
Właściwości umożliwiają zmianę konfiguracji kompilacji bez konieczności zmiany pliku projektu. Atrybut Condition
Property
elementu i PropertyGroup
elementu umożliwia zmianę wartości właściwości. Aby uzyskać więcej informacji na temat warunków programu MSBuild, zobacz Warunki.
Aby ustawić grupę właściwości, która zależy od innej właściwości
Użyj atrybutu w elemecie
Condition
PropertyGroup
podobnym do następującego:<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Aby zdefiniować właściwość, która zależy od innej właściwości
Użyj atrybutu w elemecie
Condition
Property
podobnym do następującego:<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>
Określanie właściwości w wierszu polecenia
Gdy plik projektu zostanie zapisany w celu zaakceptowania wielu konfiguracji, musisz mieć możliwość zmiany tych konfiguracji za każdym razem, gdy kompilujesz projekt. Program MSBuild umożliwia określenie właściwości w wierszu polecenia przy użyciu przełącznika -property lub -p .
Aby ustawić właściwość projektu w wierszu polecenia
Użyj przełącznika -property z właściwością i wartością 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 przełącznika -property lub -p wiele razy z wartościami właściwości i właściwości lub użyj jednego przełącznika -property lub -p i rozdziel wiele właściwości ś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ą również traktowane jako właściwości i są automatycznie uwzględniane przez program MSBuild. Aby uzyskać więcej informacji na temat używania zmiennych środowiskowych, zobacz Instrukcje: używanie zmiennych środowiskowych w kompilacji.
Wartość właściwości określona w wierszu polecenia ma pierwszeństwo przed dowolną wartością ustawioną dla tej samej właściwości w pliku projektu, a ta wartość w pliku projektu ma pierwszeństwo przed wartością w zmiennej środowiskowej.
To zachowanie można zmienić przy użyciu atrybutu
TreatAsLocalProperty
w tagu projektu. W przypadku nazw właściwości wymienionych za pomocą tego atrybutu wartość właściwości określona w wierszu polecenia nie ma pierwszeństwa przed wartością w pliku projektu. Przykład można znaleźć w dalszej części tego tematu.
Przykład 1
Poniższy przykład kodu, projekt "Hello World", zawiera dwie nowe grupy właściwości, których można użyć do utworzenia kompilacji debugowania i kompilacji wydania.
Aby skompilować wersję debugowania tego projektu, wpisz:
msbuild consolehwcs1.proj -p:flavor=debug
Aby skompilować wersję detaliczną tego projektu, wpisz:
msbuild consolehwcs1.proj -p:flavor=retail
<Project DefaultTargets = "Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Sets the default flavor if 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>
Przykład 2
W poniższym przykładzie pokazano, jak używać atrybutu TreatAsLocalProperty
. Właściwość Color
ma wartość Blue
w pliku projektu i Green
w wierszu polecenia. W TreatAsLocalProperty="Color"
tagu projektu właściwość wiersza polecenia (Green
) nie zastępuje właściwości zdefiniowanej w pliku projektu (Blue
).
Aby skompilować projekt, wprowadź następujące polecenie:
msbuild colortest.proj -t:go -property:Color=Green
<Project xmlns="http://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
-->