Proprietà di MSBuild
Le proprietà sono coppie nome-valore che è possibile utilizzare per configurare le compilazioni. Le proprietà sono utili per passare valori alle attività, valutare condizioni e archiviare valori a cui verrà fatto riferimento nel file di progetto.
Definizione e riferimento a proprietà in un file di progetto
Per dichiarare le proprietà, è necessario creare un elemento con lo stesso nome della proprietà come figlio di un elemento PropertyGroup. Il codice XML seguente consente ad esempio di creare una proprietà denominata BuildDir con un valore Build.
<PropertyGroup>
<BuildDir>Build</BuildDir>
</PropertyGroup>
Nel file di progetto viene fatto riferimento alle proprietà utilizzando la sintassi $(PropertyName). Per fare riferimento alla proprietà dell'esempio precedente si utilizza, ad esempio, $(BuildDir).
I valori delle proprietà possono essere modificati ridefinendo la proprietà. È possibile assegnare un nuovo valore alla proprietà BuildDir utilizzando il codice XML seguente:
<PropertyGroup>
<BuildDir>Alternate</BuildDir>
</PropertyGroup>
Le proprietà vengono valutate in base all'ordine in cui appaiono nel file di progetto. Il nuovo valore per BuildDir deve essere dichiarato dopo che è stato assegnato il valore precedente.
Proprietà riservate
In MSBuild alcuni nomi di proprietà sono riservati per archiviare le informazioni relative al file di progetto e ai file binari di MSBuild. A queste proprietà viene fatto riferimento utilizzando la notazione $, come per qualsiasi altra proprietà. $(MSBuildProjectFile) restituisce, ad esempio, il nome file completo del file di progetto, inclusa l'estensione.
Per ulteriori informazioni, vedere Procedura: fare riferimento al nome o al percorso del file di progetto e Proprietà riservate MSBuild.
Proprietà di ambiente
È possibile fare riferimento alle variabili di ambiente nei file di progetto nello stesso modo utilizzato per le proprietà riservate. Per utilizzare, ad esempio, la variabile di ambiente PATH nel file di progetto, utilizzare $(Path). Se il progetto contiene una definizione di proprietà con lo stesso nome di una proprietà di ambiente, tale proprietà nel progetto esegue l'override del valore della variabile di ambiente. Per ulteriori informazioni, vedere Procedura: utilizzare le variabili di ambiente in una compilazione.
Proprietà del Registro di sistema
È possibile leggere i valori del Registro di sistema utilizzando la sintassi seguente, dove Hive è l'hive del Registro di sistema, ad esempio HKEY_LOCAL_MACHINE, Key è il nome della chiave, SubKey è il nome della sottochiave e Value è il valore della sottochiave.
$(registry:Hive\MyKey\MySubKey@Value)
Per ottenere il valore predefinito della sottochiave, omettere Value.
$(registry:Hive\MyKey\MySubKey)
Questo valore del Registro di sistema può essere utilizzato per inizializzare una proprietà di compilazione. Per creare, ad esempio, una proprietà di compilazione che rappresenta la home page del Web browser di Visual Studio, utilizzare il codice seguente:
<PropertyGroup>
<VisualStudioWebBrowserHomePage>
$(registry:HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\WebBrowser@HomePage)
</VisualStudioWebBrowserHomePage>
<PropertyGroup>
Proprietà globali
MSBuild consente di impostare le proprietà nella riga di comando utilizzando l'opzione /property (o /p). Questi valori delle proprietà globali eseguono l'override dei valori delle proprietà impostati nel file di progetto. Questo vale anche per le proprietà di ambiente, ma non per le proprietà riservate, che non possono essere modificate.
Nell'esempio seguente la proprietà globale Configuration viene impostata su DEBUG.
msbuild.exe MyProj.proj /p:Configuration=DEBUG
Le proprietà globali possono anche essere impostate o modificate per i progetti figlio in una compilazione di più progetti utilizzando l'attributo Properties dell'attività MSBuild. Per ulteriori informazioni, vedere Attività MSBuild.
Funzioni delle proprietà
In .NET Framework versione 4 è possibile utilizzare funzioni delle proprietà per valutare gli script MSBuild. È possibile leggere l'ora di sistema, confrontare stringhe, trovare la corrispondenza per espressioni regolari ed eseguire molte altre azioni negli script di compilazione senza utilizzare le attività MSBuild.
È possibile utilizzare metodi di stringa (istanza) per eseguire operazioni su qualsiasi valore delle proprietà ed è possibile chiamare i metodi statici di numerose classi di sistema. È ad esempio possibile impostare una proprietà di compilazione sulla data corrente procedendo come indicato di seguito:
<Today>$([System.DateTime]::Now.ToString("yyyy.MM.dd"))</Today>
Per un elenco delle funzioni delle proprietà disponibili e per informazioni sul relativo utilizzo, vedere Funzioni delle proprietà.
Creazione di proprietà durante l'esecuzione
Alle proprietà al di fuori degli elementi Target vengono assegnati valori durante la fase di valutazione di una compilazione. Durante la fase di esecuzione successiva, le proprietà possono essere create o modificate come indicato di seguito:
Una proprietà può essere creata da qualsiasi attività. Per creare una proprietà, l'elemento Task deve disporre di un elemento Output figlio con un attributo PropertyName.
Una proprietà può essere creata dall'attività CreateProperty. Questo tipo di utilizzo è deprecato.
A partire da .NET Framework 3.5, gli elementi Target possono contenere elementi PropertyGroup che possono contenere a loro volta dichiarazioni di proprietà.
Archiviazione di XML nelle proprietà
Le proprietà possono contenere codice XML arbitrario, che può risultare utile per il passaggio dei valori alle attività o per la visualizzazione delle informazioni di registrazione. Nell'esempio seguente viene illustrata la proprietà ConfigTemplate che dispone di un valore che contiene codice XML e altri riferimenti alle proprietà. In MSBuild i riferimenti alle proprietà vengono sostituiti con i rispettivi valori delle proprietà. I valori delle proprietà vengono assegnati in base all'ordine in cui appaiono. In questo esempio, pertanto, $(MySupportedVersion), $(MyRequiredVersion) e $(MySafeMode) devono essere già stati definiti.
<PropertyGroup>
<ConfigTemplate>
<Configuration>
<Startup>
<SupportedRuntime
ImageVersion="$(MySupportedVersion)"
Version="$(MySupportedVersion)"/>
<RequiredRuntime
ImageVersion="$(MyRequiredVersion)
Version="$(MyRequiredVersion)"
SafeMode="$(MySafeMode)"/>
</Startup>
</Configuration>
</ConfigTemplate>
</PropertyGroup>
Vedere anche
Attività
Procedura: utilizzare le variabili di ambiente in una compilazione
Procedura: fare riferimento al nome o al percorso del file di progetto
Procedura: compilare gli stessi file di origine con opzioni diverse