Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si compilano progetti, spesso si compilano gli stessi componenti con diverse opzioni di compilazione. Ad esempio, è possibile creare una compilazione di debug con informazioni sui simboli o una build di versione senza informazioni sui simboli, ma con ottimizzazioni abilitate. In alternativa, è possibile compilare un progetto da eseguire in una piattaforma specifica, ad esempio x86 o x64. In tutti questi casi, la maggior parte delle opzioni di compilazione rimane invariata. Solo alcune opzioni vengono modificate per controllare la configurazione della compilazione. Con MSBuild si usano proprietà e condizioni per creare le diverse configurazioni di compilazione per i file di origine.
Usare le proprietà per controllare le impostazioni di compilazione
L'elemento Property definisce una variabile con più riferimenti in un file di progetto. La variabile può identificare il percorso di una directory temporanea o impostare i valori per le proprietà usate in diverse configurazioni, ad esempio debug e build di rilascio. Per ulteriori informazioni sulle proprietà, fare riferimento a proprietà MSBuild.
È possibile usare le proprietà per modificare la configurazione della compilazione senza dover modificare il file di progetto. L'attributo Condition degli elementi Property e PropertyGroup consente di modificare il valore delle proprietà.
Per definire una proprietà che dipende da un'altra proprietà, impostare l'attributo
Conditionin unPropertyelemento :<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>Per definire un gruppo di proprietà che dipendono da un'altra proprietà, impostare l'attributo
Conditionin unPropertyGroupelemento :<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Per altre informazioni sulle condizioni di MSBuild, vedere Condizioni.
Specificare le proprietà nella riga di comando
Quando il file di progetto accetta più configurazioni, è necessaria la possibilità di modificare le configurazioni ogni volta che si compila il progetto. MSBuild supporta questa azione consentendo di specificare le proprietà nella riga di comando con l'opzione -property o -p .
Per impostare una proprietà del progetto nella riga di comando, usare l'opzione
-property(o-p) con il nome e il valore della proprietà:msbuild file.proj -property:Flavor=DebugPer specificare più proprietà del progetto nella riga di comando, usare l'opzione
-property(-p) con ogni nome e valore della proprietà:msbuild file.proj -p:Flavor=Debug -p:Platform=x86Esiste una scorciatoia per specificare più proprietà nella riga di comando. Immettere l'opzione
-property(-p) una sola volta e separare l'elenco di nomi e valori delle proprietà usando il punto e virgola (;):msbuild file.proj -p:Flavor=Debug;Platform=x86;Verbose=True
Gestire la precedenza tra variabili di ambiente e proprietà
MSBuild elabora i valori delle variabili di ambiente nello stesso modo in cui gestisce le proprietà. Quando la compilazione rileva più valori per una proprietà, imposta il valore in base all'ordine di precedenza: riga di comando (più alta), file di progetto e variabile di ambiente (più bassa).
Un valore della proprietà specificato nella riga di comando ha la precedenza su qualsiasi valore impostato per la stessa proprietà nel file di progetto o nella variabile di ambiente.
Un valore della proprietà impostato nel file di progetto ha la precedenza sul valore corrispondente definito in una variabile di ambiente.
È possibile modificare il comportamento di precedenza usando l'attributo TreatAsLocalProperty in un tag di progetto. Quando si elencano i nomi delle proprietà con questo attributo, il valore della proprietà specificato nella riga di comando non ha la precedenza sul valore nel file di progetto. Per un esempio, vedere Modificare la precedenza con l'attributo TreatAsLocalProperty.
Per altre informazioni, vedere Usare le variabili di ambiente in una compilazione.
Usare i gruppi di proprietà per modificare le configurazioni di compilazione
Nell'esempio seguente viene illustrato un file di progetto che definisce due gruppi di proprietà per compilare una versione Debug o Release del progetto.
Per compilare la versione di debug, usare l'opzione
-property(-p) con il valore dellaflavorproprietà impostato sudebug:msbuild consolehwcs1.proj -p:flavor=debugPer compilare la versione release, usare l'opzione
-property(-p) con il valore dellaflavorproprietà impostato suretail:msbuild consolehwcs1.proj -p:flavor=retail
Ecco il file di progetto:
<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>
Modificare la precedenza con l'attributo TreatAsLocalProperty
Nell'esempio seguente viene illustrato come usare l'attributo TreatAsLocalProperty . La proprietà Color ha un valore di Blue nel file di progetto e Green nella riga di comando. Con l'impostazione dell'attributo TreatAsLocalProperty="Color" nel tag di progetto, la proprietà della riga di comando (Green) non esegue l'override del valore della proprietà definito nel file di progetto (Blue).
Per compilare il progetto, immettere il comando seguente:
msbuild colortest.proj -t:go -property:Color=Green
Ecco il file di progetto:
<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
-->
Contenuti correlati
- msbuild
- concetti di MSBuild
- Riferimento di MSBuild
- Elemento Progetto (MSBuild)