Partager via


Utiliser des variables d’environnement dans une build

Lorsque vous générez des projets, il est souvent nécessaire de définir des options de génération à l’aide d’informations qui ne se trouvent pas dans le fichier projet ou les fichiers qui composent votre projet. Ces informations sont généralement stockées dans des variables d’environnement.

Remarque

MSBuild traite les variables d’environnement comme des entrées approuvées. Ils peuvent entraîner le chargement de la logique de construction par MSBuild, tels que des tâches, .targets ou des fichiers .props à partir d'emplacements personnalisés ou modifier la façon dont le processus de compilation s'exécute.

Variables d’environnement de référence

Toutes les variables d’environnement qui sont des noms de propriétés MSBuild valides sont disponibles pour le fichier projet MSBuild en tant que propriétés. Les noms de propriétés valides sont décrits dans les propriétés MSBuild. Par exemple, les variables d’environnement commençant par un nombre ne sont pas disponibles dans MSBuild.

Remarque

Si le fichier projet contient une définition explicite d’une propriété portant le même nom qu’une variable d’environnement, la propriété du fichier projet remplace la valeur de la variable d’environnement.

Pour utiliser une variable d’environnement dans un projet MSBuild

  • Référencez la variable d’environnement de la même façon qu’une variable déclarée dans votre fichier projet. Par exemple, le code suivant fait référence à la variable d’environnement BIN_PATH :

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

    Vous pouvez utiliser un Condition attribut pour fournir une valeur par défaut pour une propriété si la variable d’environnement n’a pas été définie.

Pour fournir une valeur par défaut pour une propriété

  • Utilisez un Condition attribut sur une propriété pour définir la valeur uniquement si la propriété n’a aucune valeur. Par exemple, le code suivant définit la ToolsPath propriété sur c :\tools uniquement si la ToolsPath variable d’environnement n’est pas définie :

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

    Remarque

    Les noms de propriétés ne respectent pas la casse et $(ToolsPath)$(TOOLSPATH) font référence à la même propriété ou à la même variable d’environnement.

Exemple :

Le fichier projet suivant utilise des variables d’environnement pour spécifier l’emplacement des répertoires.

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