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 des informations qui ne figurent pas dans le fichier projet ou dans les fichiers qui composent votre projet. Ces informations sont généralement stockées dans les variables d’environnement.

Référencer des variables d’environnement

Toutes les variables d’environnement qui sont des noms de propriété MSBuild valides sont disponibles pour le fichier projet Microsoft Build Engine (MSBuild) en tant que propriétés. Des noms de propriété valides sont décrits dans des propriétés MSBuild. Par exemple, des variables d’environnement commençant par un numéro ne sont pas disponibles dans MSBuild.

Remarque

Si le fichier projet contient une définition explicite d’une propriété qui porte 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 comme vous le feriez pour une variable déclarée dans votre fichier projet. Par exemple, le code suivant référence la variable d’environnement BIN_PATH :

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

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

Pour fournir la valeur par défaut d’une propriété

  • Utilisez un attribut Condition dans 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 propriété ToolsPath sur c:\tools uniquement si la variable d’environnement ToolsPath n’est pas définie :

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

    Notes

    Comme les noms de propriété ne respectent pas la casse, $(ToolsPath) et $(TOOLSPATH) référencent la même variable d’environnement ou propriété.

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>