Freigeben über


Verwenden von Umgebungsvariablen in einem Build

Wenn Sie Projekte erstellen, ist es oft erforderlich, Buildoptionen mithilfe der Informationen festzulegen, die sich nicht in der Projektdatei oder in den Dateien befinden, aus denen Ihr Projekt besteht. Diese Informationen werden normalerweise in Umgebungsvariablen gespeichert.

Verweisen auf Umgebungsvariablen

Alle Umgebungsvariablen, die gültige MSBuild-Eigenschaftsnamen sind, stehen der Microsoft Build Engine (MSBuild) Projektdatei als Eigenschaften zur Verfügung. Gültige Eigenschaftennamen werden in MSBuild-Eigenschaftenbeschrieben. Umgebungsvariablen, die mit einer Zahl beginnen, sind beispielsweise in MSBuild nicht verfügbar.

Hinweis

Wenn das Projekt eine Eigenschaftsdefinition enthält, die denselben Namen wie eine Umgebungsvariable hat, wird der Wert der Umgebungsvariablen von der Eigenschaft im Projekt überschrieben.

Verwenden einer Umgebungsvariable in einem MSBuild-Projekt

  • Verweisen Sie auf die gleiche Art auf Umgebungsvariablen wie auf eine Variable, die in der Projektdatei deklariert ist. Beispielsweise verweist der folgende Code auf die Umgebungsvariable BIN_PATH:

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

    Sie können ein Condition-Attribut verwenden, um einen Standardwert für eine Eigenschaft anzugeben, wenn die Umgebungsvariable nicht festgelegt wurde.

Gibt den Standardwert für eine Eigenschaft an

  • Verwenden eines Condition-Attributs für eine Eigenschaft, um einen Wert festzulegen, nur wenn die Eigenschaft keinen Wert hat. Im folgenden Code wird z.B. die ToolsPath-Eigenschaft nur auf c:\tools festgelegt, wenn die ToolsPath-Umgebungsvariable nicht festgelegt ist:

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

    Hinweis

    Eigenschaftennamen unterscheiden keine Groß-/Kleinschreibung, sodass jeweils $(ToolsPath) und $(TOOLSPATH) auf die gleiche Eigenschaft oder Umgebungsvariable verweisen.

Beispiel

Die folgende Projektdatei verwendet Umgebungsvariablen, um den Speicherort von Verzeichnissen anzugeben.

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