Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u projecten bouwt, compileert u vaak dezelfde onderdelen met verschillende buildopties. U kunt bijvoorbeeld een foutopsporingsbuild maken met symboolinformatie of een release-build zonder symboolgegevens, maar met optimalisaties ingeschakeld. U kunt ook een project bouwen dat moet worden uitgevoerd op een specifiek platform, zoals x86 of x64. In al deze gevallen blijven de meeste buildopties hetzelfde. Er worden slechts enkele opties gewijzigd om de buildconfiguratie te beheren. Met MSBuild gebruikt u eigenschappen en voorwaarden om de verschillende buildconfiguraties voor uw bronbestanden te maken.
Eigenschappen gebruiken om build-instellingen te beheren
Het Property element definieert een variabele met meerdere verwijzingen in een projectbestand. De variabele kan de locatie van een tijdelijke map identificeren of de waarden instellen voor eigenschappen die in verschillende configuraties worden gebruikt, zoals fouten opsporen en release-builds. Voor meer informatie over eigenschappen, zie MSBuild-eigenschappen.
U kunt eigenschappen gebruiken om de configuratie van uw build te wijzigen zonder het projectbestand te hoeven wijzigen. Met Condition het kenmerk van de Property en PropertyGroup elementen kunt u de waarde van eigenschappen wijzigen.
Als u een eigenschap wilt definiëren die afhankelijk is van een andere eigenschap, stelt u het
Conditionkenmerk in eenPropertyelement in:<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>Als u een groep eigenschappen wilt definiëren die afhankelijk is van een andere eigenschap, stelt u het
Conditionkenmerk in eenPropertyGroupelement in:<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Zie Voorwaarden voor meer informatie over MSBuild-voorwaarden.
Eigenschappen opgeven op de opdrachtregel
Wanneer uw projectbestand meerdere configuraties accepteert, hebt u de mogelijkheid nodig om de configuraties te wijzigen wanneer u uw project bouwt. MSBuild ondersteunt deze actie door u in staat te stellen eigenschappen op te geven op de opdrachtregel met de -property of -p switch.
Als u een projecteigenschap wilt instellen op de opdrachtregel, gebruikt u de
-propertyschakeloptie (of-p) met de naam en waarde van de eigenschap:msbuild file.proj -property:Flavor=DebugAls u meer dan één projecteigenschap op de opdrachtregel wilt opgeven, gebruikt u de
-property(-p) schakeloptie met elke eigenschapsnaam en -waarde:msbuild file.proj -p:Flavor=Debug -p:Platform=x86Er is een snelkoppeling voor het opgeven van meerdere eigenschappen op de opdrachtregel. Voer eenmaal de
-propertyschakeloptie (-p) in en scheid de lijst met eigenschapsnamen en -waarden met behulp van de puntkomma (;):msbuild file.proj -p:Flavor=Debug;Platform=x86;Verbose=True
Prioriteit afhandelen voor omgevingsvariabelen en -eigenschappen
MSBuild verwerkt omgevingsvariabelewaarden op dezelfde manier als het eigenschappen verwerkt. Wanneer de build meerdere waarden voor een eigenschap tegenkomt, wordt de waarde ingesteld op basis van de volgorde van prioriteit: opdrachtregel (hoogste), projectbestand en omgevingsvariabele (laagste).
Een eigenschapswaarde die is opgegeven op de opdrachtregel heeft voorrang op een waarde die is ingesteld voor dezelfde eigenschap in het projectbestand of de omgevingsvariabele.
Een eigenschapswaarde die is ingesteld in het projectbestand heeft voorrang op de bijbehorende waarde die is gedefinieerd in een omgevingsvariabele.
U kunt het prioriteitsgedrag wijzigen met behulp van het TreatAsLocalProperty kenmerk in een projecttag. Wanneer u eigenschapsnamen met dit kenmerk opgeeft, heeft de eigenschapswaarde die is opgegeven op de opdrachtregel, geen prioriteit boven de waarde in het projectbestand. Zie Bijvoorbeeld Prioriteit wijzigen met het kenmerk TreatAsLocalProperty.
Zie Omgevingsvariabelen gebruiken in een build voor meer informatie.
Eigenschappengroepen gebruiken om buildconfiguraties te wijzigen
In het volgende voorbeeld ziet u een projectbestand dat twee eigenschapsgroepen definieert om een foutopsporings- of releaseversie van het project te bouwen.
Als u de foutopsporingsversie wilt bouwen, gebruikt u de
-propertyschakeloptie (-p) met deflavoreigenschapswaarde ingesteld opdebug:msbuild consolehwcs1.proj -p:flavor=debugAls u de releaseversie wilt bouwen, gebruikt u de
-property(-p) switch waarbij deflavoreigenschapswaarde is ingesteld opretail:msbuild consolehwcs1.proj -p:flavor=retail
Dit is het projectbestand:
<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>
Prioriteit wijzigen met het kenmerk TreatAsLocalProperty
In het volgende voorbeeld ziet u hoe u het TreatAsLocalProperty kenmerk gebruikt. De Color eigenschap heeft een waarde in Blue het projectbestand en Green in de opdrachtregel. Met de TreatAsLocalProperty="Color" kenmerkinstelling in de projecttag overschrijft de opdrachtregeleigenschap (Green) de eigenschapswaarde die is gedefinieerd in het projectbestand (Blue) niet.
Voer de volgende opdracht in om het project te bouwen:
msbuild colortest.proj -t:go -property:Color=Green
Dit is het projectbestand:
<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
-->