在生成中使用环境变量

在生成项目时,有时经常需要使用非项目文件或构成项目的文件中的信息来设置生成选项。 此信息通常存储在环境变量中。

引用环境变量

所有为有效 MSBuild 属性名称的环境变量都可供 Microsoft 生成引擎 (MSBuild) 项目文件作为属性使用。 有效属性名称在 MSBuild 属性中进行了说明。 例如,以数字开头的环境变量在 MSBuild 中不可用。

说明

如果项目文件包含与环境变量具有相同名称的属性的显式定义,则项目文件中的属性将替代环境变量的值。

在 MSBuild 项目中使用环境变量

  • 以引用项目文件中声明的变量相同的方式引用环境变量。 例如,以下代码引用 BIN_PATH 环境变量:

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

    如果未设置环境变量,则可以使用 Condition 属性来提供属性的默认值。

提供属性的默认值

  • 仅当某属性不具有任何值时,使用该属性上的 Condition 特性来设置值。 例如,仅在未设置 ToolsPath 环境变量时,以下代码才将 ToolsPath 属性设置为 c:\tools

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

    注意

    属性名称不区分大小写,因此 $(ToolsPath)$(TOOLSPATH) 均引用相同的属性或环境变量。

示例

以下项目文件使用环境变量来指定目录的位置。

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