Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
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. W programie MSBuild użyjesz właściwości i warunków, aby utworzyć różne konfiguracje kompilacji dla plików źródłowych.
Używanie właściwości do kontrolowania ustawień kompilacji
Element Property definiuje zmienną, która zawiera wiele odwołań w pliku projektu. Zmienna może identyfikować lokalizację katalogu tymczasowego lub ustawiać wartości właściwości używanych w kilku konfiguracjach, takich jak buildy Debug i Release. 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 elementów Property i PropertyGroup umożliwia zmianę wartości właściwości.
Aby zdefiniować właściwość, która zależy od innej właściwości, ustaw
Conditionatrybut w elemecieProperty:<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>Aby zdefiniować grupę właściwości, która zależy od innej właściwości, ustaw
Conditionatrybut w elemeciePropertyGroup:<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Aby uzyskać więcej informacji na temat warunków programu MSBuild, zobacz Warunki.
Określanie właściwości w wierszu polecenia
Gdy plik projektu akceptuje wiele konfiguracji, musisz mieć możliwość zmiany konfiguracji za każdym razem, gdy kompilujesz projekt. Program MSBuild obsługuje tę akcję, umożliwiając określanie właściwości w wierszu polecenia za pomocą przełącznika -property lub -p .
Aby ustawić właściwość projektu w wierszu polecenia, użyj przełącznika
-property(lub-p) z nazwą właściwości i wartością:msbuild file.proj -property:Flavor=DebugAby określić więcej niż jedną właściwość projektu w wierszu polecenia, użyj przełącznika
-property(-p) z każdą nazwą i wartością właściwości:msbuild file.proj -p:Flavor=Debug -p:Platform=x86Istnieje skrót do określania wielu właściwości w wierszu polecenia.
-propertyWprowadź przełącznik (-p) raz i rozdziel listę nazw właściwości i wartości przy użyciu średnika (;):msbuild file.proj -p:Flavor=Debug;Platform=x86;Verbose=True
Zarządzanie pierwszeństwem między zmiennymi środowiskowymi a parametrami
Program MSBuild przetwarza wartości zmiennych środowiskowych w taki sam sposób, jak obsługuje właściwości. Gdy kompilacja napotka wiele wartości dla właściwości, ustawia wartość zgodnie z kolejnością pierwszeństwa: wiersz polecenia (najwyższy), plik projektu i zmienną środowiskową (najniższa).
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 lub zmiennej środowiskowej.
Wartość właściwości ustawiona w pliku projektu ma pierwszeństwo przed odpowiednią wartością zdefiniowaną w zmiennej środowiskowej.
Zachowanie pierwszeństwa można zmienić przy użyciu atrybutu TreatAsLocalProperty w tagu projektu. Gdy wyświetlasz listę nazw właściwości z tym atrybutem, wartość właściwości określona w wierszu polecenia nie ma pierwszeństwa przed wartością w pliku projektu. Aby zapoznać się z przykładem, zobacz Change precedence with the TreatAsLocalProperty attribute (Zmiana pierwszeństwa za pomocą atrybutu TreatAsLocalProperty).
Aby uzyskać więcej informacji, zobacz Używanie zmiennych środowiskowych w kompilacji.
Zmienianie konfiguracji kompilacji przy użyciu grup właściwości
W poniższym przykładzie pokazano plik projektu, który definiuje dwie grupy właściwości w celu utworzenia wersji debugowania lub wydania projektu.
Aby skompilować wersję debugowania, użyj przełącznika
-property(-p) z wartością właściwości ustawionąflavornadebug:msbuild consolehwcs1.proj -p:flavor=debugAby skompilować wersję wydania, użyj przełącznika
-property(-p) z wartością właściwości ustawionąflavornaretail:msbuild consolehwcs1.proj -p:flavor=retail
Oto plik projektu:
<Project DefaultTargets = "Compile">
<!-- Set default flavor, if env variable 'Flavor' not set or specified on command line -->
<PropertyGroup>
<Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
</PropertyGroup>
<!-- Define DEBUG settings -->
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
<DebugType>full</DebugType>
<Optimize>no</Optimize>
</PropertyGroup>
<!-- Define RETAIL settings -->
<PropertyGroup Condition="'$(Flavor)'=='RETAIL'">
<DebugType>pdbonly</DebugType>
<Optimize>yes</Optimize>
</PropertyGroup>
<!-- Set application name as a property -->
<PropertyGroup>
<appname>HelloWorldCS</appname>
</PropertyGroup>
<!-- Specify inputs by type and file name -->
<ItemGroup>
<CSFile Include = "consolehwcs1.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run Visual C# compilation using input file of type CSFile -->
<CSC Sources = "@(CSFile)"
DebugType="$(DebugType)"
Optimize="$(Optimize)"
OutputAssembly="$(appname).exe" >
<!-- Set OutputAssembly attribute of CSC task to name of created executable file -->
<Output TaskParameter="OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- Log file name of output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
Zmień pierwszeństwo za pomocą atrybutu TreatAsLocalProperty
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. Ustawienie atrybutu TreatAsLocalProperty="Color" w tagu projektu powoduje, że właściwość wiersza polecenia (Green) nie zastępuje wartości 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
Oto plik projektu:
<Project 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
-->
Treści powiązane
- MSBuild
- pojęcia dotyczące programu MSBuild
- referencja programu MSBuild
- Element projektu (MSBuild)