Condividi tramite


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, come figlio di un elemento PropertyGroup, un elemento con lo stesso nome della proprietà.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.

Ogni progetto MSBuild con blocco di ambiente isolato: vedere solo lettura e scrittura al proprio blocco.MSBuild letto solo le variabili di ambiente durante l'inizializzazione della raccolta di proprietà, prima che il file di progetto venga analizzato e compilato.Successivamente, le proprietà di ambiente sono statici, ovvero, generati inizio di ogni strumento con gli stessi nomi e valori.

Per ottenere il valore corrente delle variabili di ambiente da uno strumento generato, utilizzare Funzioni delle proprietà System.Environment.GetEnvironmentVariable.Il metodo preferito, tuttavia, di utilizzare il parametro di attività EnvironmentVariables.Le proprietà di ambiente impostate in questa matrice di stringhe possono essere passate allo strumento generato senza influire sulle variabili di ambiente di sistema.

SuggerimentoSuggerimento

Non tutte le variabili di ambiente vengono lette in per diventare le proprietà iniziali.Qualsiasi variabile di ambiente con il nome non è nomi validi proprietà MSBuild, ad esempio “386 ", viene ignorata.

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\11.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.

Se si specifica una proprietà utilizzando l'attributo TreatAsLocalProperty in un tag di progetto, tale valore della proprietà globale non esegue l'override del valore della proprietà che sia impostato nel file di progetto.Per ulteriori informazioni, vedere Elemento Project (MSBuild) e Procedura: compilare gli stessi file di origine con opzioni diverse.

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

Riferimenti

Proprietà riservate MSBuild

Elemento Property (MSBuild)

Altre risorse

Concetti relativi a MSBuild

MSBuild