Usare le variabili di ambiente in una compilazione

Quando si compilano i progetti, spesso è necessario impostare le opzioni di compilazione usando informazioni non incluse nel file di progetto o nei file che costituiscono il progetto. Queste informazioni sono in genere archiviate nelle variabili di ambiente.

Fare riferimento alle variabili di ambiente

Tutte le variabili di ambiente che sono nomi di proprietà MSBuild validi sono disponibili per il file di progetto Microsoft Build Engine (MSBuild) come proprietà. I nomi di proprietà validi sono descritti nelle proprietà di MSBuild. Ad esempio, le variabili di ambiente che iniziano con un numero non sono disponibili in MSBuild.

Nota

Se il file di progetto contiene una definizione esplicita di una proprietà con lo stesso nome di una variabile di ambiente, la proprietà nel file di progetto esegue l'override del valore della variabile di ambiente.

Per usare una variabile di ambiente in un progetto MSBuild

  • Fare riferimento alla variabile di ambiente esattamente come a una variabile dichiarata nel file di progetto. Il codice seguente, ad esempio, fa riferimento alla variabile di ambiente BIN_PATH:

    <FinalOutput>$(BIN_PATH)\MyAssembly.dll</FinalOutput>

    È possibile usare un attributo Condition per fornire un valore predefinito per una proprietà se la variabile di ambiente non è stata impostata.

Per fornire un valore predefinito per una proprietà

  • Usare un attributo Condition in una proprietà per impostare il valore solo se la proprietà non ha un valore. Il codice seguente, ad esempio, imposta la proprietà ToolsPath su c:\tools solo se la variabile di ambiente ToolsPath non è impostata:

    <ToolsPath Condition="'$(TOOLSPATH)' == ''">c:\tools</ToolsPath>

    Nota

    Per i nomi delle proprietà non viene rilevata la distinzione tra maiuscole e minuscole, quindi sia $(ToolsPath) che $(TOOLSPATH) fanno riferimento alla stessa proprietà o variabile di ambiente.

Esempio

Il file di progetto seguente usa variabili di ambiente per specificare il percorso delle directory.

<Project DefaultTargets="FakeBuild">
    <PropertyGroup>
        <FinalOutput>$(BIN_PATH)\myassembly.dll</FinalOutput>
        <ToolsPath Condition=" '$(ToolsPath)' == '' ">
            C:\Tools
        </ToolsPath>
    </PropertyGroup>
    <Target Name="FakeBuild">
        <Message Text="Building $(FinalOutput) using the tools at $(ToolsPath)..."/>
    </Target>
</Project>