Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du skapar projekt kompilerar du ofta samma komponenter med olika byggalternativ. Du kan till exempel skapa en felsökningsversion med symbolinformation eller en versionsversion utan symbolinformation, men med optimeringar aktiverade. Eller så kan du skapa ett projekt som ska köras på en specifik plattform, till exempel x86 eller x64. I alla dessa fall förblir de flesta byggalternativen desamma. Endast ett fåtal alternativ ändras för att styra byggkonfigurationen. Med MSBuild använder du egenskaper och villkor för att skapa de olika byggkonfigurationerna för dina källfiler.
Använda egenskaper för att styra bygginställningar
Elementet Property definierar en variabel som har flera referenser i en projektfil. Variabeln kan identifiera platsen för en tillfällig katalog eller ange värden för egenskaper som används i flera konfigurationer, till exempel Felsökning och Versionsversioner. Mer information om egenskaper finns i MSBuild-egenskaper.
Du kan använda egenskaper för att ändra konfigurationen av bygget utan att behöva ändra projektfilen. Med Condition attributet Property och PropertyGroup kan du ändra värdet för egenskaper.
Om du vill definiera en egenskap som är beroende av en annan egenskap anger du
Conditionattributet i ettPropertyelement:<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>Om du vill definiera en grupp med egenskaper som är beroende av en annan egenskap anger du
Conditionattributet i ettPropertyGroupelement:<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Mer information om MSBuild-villkor finns i Villkor.
Ange egenskaper på kommandoraden
När projektfilen accepterar flera konfigurationer behöver du kunna ändra konfigurationerna när du skapar projektet. MSBuild stöder den här åtgärden genom att du kan ange egenskaper på kommandoraden med växeln -property eller -p .
Om du vill ange en projektegenskap på kommandoraden använder du växeln
-property(eller-p) med egenskapsnamnet och värdet:msbuild file.proj -property:Flavor=DebugOm du vill ange mer än en projektegenskap på kommandoraden använder du växeln
-property(-p) med varje egenskapsnamn och värde:msbuild file.proj -p:Flavor=Debug -p:Platform=x86Det finns en genväg för att ange flera egenskaper på kommandoraden. Ange växeln
-property(-p) en gång och avgränsa listan med egenskapsnamn och värden med hjälp av semikolonet (;):msbuild file.proj -p:Flavor=Debug;Platform=x86;Verbose=True
Hantera prioritet mellan miljövariabler och egenskaper
MSBuild bearbetar miljövariabelvärden på samma sätt som den hanterar egenskaper. När bygget påträffar flera värden för en egenskap anger den värdet enligt prioritetsordningen: kommandorad (högsta), projektfil och miljövariabel (lägst).
Ett egenskapsvärde som anges på kommandoraden har företräde framför alla värden som angetts för samma egenskap i projektfilen eller miljövariabeln.
Ett egenskapsvärde som anges i projektfilen har företräde framför motsvarande värde som definierats i en miljövariabel.
Du kan ändra prioritetsbeteendet med hjälp TreatAsLocalProperty av attributet i en projekttagg. När du listar egenskapsnamn med det här attributet har egenskapsvärdet som anges på kommandoraden inte företräde framför värdet i projektfilen. Ett exempel finns i Ändra prioritet med attributet TreatAsLocalProperty.
Mer information finns i Använda miljövariabler i en version.
Använda egenskapsgrupper för att ändra byggkonfigurationer
I följande exempel visas en projektfil som definierar två egenskapsgrupper för att skapa en felsöknings- eller versionsversion av projektet.
Om du vill skapa felsökningsversionen använder du växeln
-property(-p) med egenskapsvärdetflavorinställt pådebug:msbuild consolehwcs1.proj -p:flavor=debugOm du vill skapa släppversionen kan du använda växeln
-property(-p) med egenskapsvärdetflavorinställt påretail:msbuild consolehwcs1.proj -p:flavor=retail
Här är projektfilen:
<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>
Ändra prioritet med attributet TreatAsLocalProperty
I följande exempel visas hur du använder attributet TreatAsLocalProperty . Egenskapen Color har värdet Blue i projektfilen och Green på kommandoraden. Med attributinställningen TreatAsLocalProperty="Color" i projekttaggen åsidosätter inte kommandoradsegenskapen (Green) det egenskapsvärde som definierats i projektfilen (Blue).
Om du vill skapa projektet anger du följande kommando:
msbuild colortest.proj -t:go -property:Color=Green
Här är projektfilen:
<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
-->