Użycie zmiennych środowiskowych w kompilacji

Podczas kompilowania projektów często konieczne jest ustawienie opcji kompilacji przy użyciu informacji, które nie znajdują się w pliku projektu lub plikach składających się na projekt. Te informacje są zwykle przechowywane w zmiennych środowiskowych.

Odwołanie do zmiennych środowiskowych

Wszystkie zmienne środowiskowe, które są prawidłowymi nazwami właściwości MSBuild, są dostępne dla pliku projektu Microsoft Build Engine (MSBuild) jako właściwości. Prawidłowe nazwy właściwości są opisane we właściwościach programu MSBuild. Na przykład zmienne środowiskowe rozpoczynające się od liczby nie są dostępne w programie MSBuild.

Uwaga

Jeśli plik projektu zawiera jawną definicję właściwości, która ma taką samą nazwę jak zmienna środowiskowa, właściwość w pliku projektu zastępuje wartość zmiennej środowiskowej.

Aby użyć zmiennej środowiskowej w projekcie MSBuild

  • Odwołuj się do zmiennej środowiskowej w taki sam sposób, jak zmienna zadeklarowana w pliku projektu. Na przykład poniższy kod odwołuje się do zmiennej środowiskowej BIN_PATH:

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

    Można użyć atrybutu Condition , aby podać wartość domyślną właściwości, jeśli zmienna środowiskowa nie została ustawiona.

Aby podać wartość domyślną dla właściwości

  • Użyj atrybutu Condition we właściwości, aby ustawić wartość tylko wtedy, gdy właściwość nie ma wartości. Na przykład poniższy kod ustawia ToolsPath właściwość na c:\tools tylko wtedy, gdy zmienna ToolsPath środowiskowa nie jest ustawiona:

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

    Uwaga

    Nazwy właściwości nie są uwzględniane wielkości liter, więc zarówno, jak $(ToolsPath) i $(TOOLSPATH) odwołują się do tej samej właściwości lub zmiennej środowiskowej.

Przykład

Poniższy plik projektu używa zmiennych środowiskowych do określenia lokalizacji katalogów.

<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>