Compartir a través de


Usar variables de entorno en una compilación

Al compilar proyectos, a menudo es necesario establecer las opciones de compilación mediante información que no está en el archivo del proyecto o en los archivos que componen el proyecto. Normalmente, esta información se almacena en variables de entorno.

Referencia a variables de entorno

Todas las variables de entorno que son nombres de propiedad de MSBuild válidos están disponibles para el archivo de proyecto Microsoft Build Engine (MSBuild) como propiedades. Los nombres de propiedad válidos se describen en las propiedades de MSBuild. Por ejemplo, las variables de entorno que comienzan con un número no están disponibles en MSBuild.

Nota

Si el archivo del proyecto contiene una definición explícita de una propiedad que tiene el mismo nombre que una variable de entorno, la propiedad en el archivo del proyecto invalida el valor de la variable de entorno.

Para utilizar una variable de entorno en un proyecto de MSBuild

  • Haga referencia a la variable de entorno del mismo modo que lo haría con una variable declarada en el archivo del proyecto. Por ejemplo, el código siguiente hace referencia a la variable de entorno BIN_PATH:

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

    Puede utilizar un atributo Condition para proporcionar un valor predeterminado a una propiedad si no se ha establecido la variable de entorno.

Para proporcionar un valor predeterminado a una propiedad

  • Utilice un atributo Condition en una propiedad para establecer el valor solo si la propiedad no tiene ningún valor. Por ejemplo, el código siguiente establece la propiedad ToolsPath en c:\tools solo si la variable de entorno ToolsPath no está establecida:

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

    Nota:

    Los nombres de propiedades no distinguen mayúsculas de minúsculas, por lo que $(ToolsPath) y $(TOOLSPATH) hacen referencia a la misma propiedad o variable de entorno.

Ejemplo

El siguiente archivo del proyecto utiliza variables de entorno para especificar la ubicación de los directorios.

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