Freigeben über


Verwenden von Umgebungsvariablen in einem Build

Beim Erstellen von Projekten ist es häufig erforderlich, Buildoptionen mithilfe von Informationen festzulegen, die sich nicht in der Projektdatei oder in den Dateien befinden, aus denen Ihr Projekt besteht. Diese Informationen werden in der Regel in Umgebungsvariablen gespeichert.

Hinweis

MSBuild behandelt Umgebungsvariablen als vertrauenswürdige Eingaben. Sie können dazu führen, dass MSBuild Buildlogik wie Aufgaben, .targetsoder .props Dateien von benutzerdefinierten Speicherorten lädt oder die Ausführung des Builds ändert.

Umgebungsvariablen referenzieren

Alle Umgebungsvariablen, die gültige MSBuild-Eigenschaftennamen sind, sind für die MSBuild-Projektdatei als Eigenschaften verfügbar. Gültige Eigenschaftsnamen werden in MSBuild-Eigenschaften beschrieben. Umgebungsvariablen, die mit einer Zahl beginnen, stehen beispielsweise in MSBuild nicht zur Verfügung.

Hinweis

Wenn die Projektdatei eine explizite Definition einer Eigenschaft enthält, die denselben Namen wie eine Umgebungsvariable hat, überschreibt die Eigenschaft in der Projektdatei den Wert der Umgebungsvariable.

So verwenden Sie eine Umgebungsvariable in einem MSBuild-Projekt

  • Verweisen Sie auf die Umgebungsvariable auf die gleiche Weise wie eine variable, die in Der Projektdatei deklariert wird. Der folgende Code verweist beispielsweise auf die BIN_PATH Umgebungsvariable:

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

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

Einen Standardwert für eine Eigenschaft setzen

  • Verwenden Sie ein Condition Attribut für eine Eigenschaft, um den Wert nur festzulegen, wenn die Eigenschaft keinen Wert aufweist. Der folgende Code setzt die ToolsPath-Eigenschaft nur dann auf c:\tools, wenn die ToolsPath-Umgebungsvariable nicht gesetzt ist.

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

    Hinweis

    Bei Eigenschaftsnamen wird die Groß-/Kleinschreibung nicht beachtet, sodass sowohl $(ToolsPath) als auch $(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>