生成项目时,通常必须使用项目文件或构成项目的文件中的信息来设置生成选项。 此信息通常存储在环境变量中。
注释
MSBuild 将环境变量视为受信任的输入。 它们可能会导致 MSBuild 从自定义位置加载生成逻辑(例如任务 .targets或 .props 文件),或更改生成的执行方式。
引用环境变量
所有作为有效 MSBuild 属性名称的环境变量都可以作为属性提供给 MSBuild 项目文件。 MSBuild 属性中描述了有效的属性名称。 例如,以数字开头的环境变量在 MSBuild 中不可用。
注释
如果项目文件包含与环境变量同名的属性的显式定义,则项目文件中的属性将替代环境变量的值。
在 MSBuild 项目中使用环境变量
引用环境变量的方式与在项目文件中声明的变量的方式相同。 例如,以下代码引用BIN_PATH环境变量:
<FinalOutput>$(BIN_PATH)\MyAssembly.dll</FinalOutput>如果未设置环境变量,则可以使用
Condition特性为属性提供默认值。
为属性提供默认值
Condition仅当属性没有值时,才使用属性上的属性设置值。 例如,以下代码仅在未设置环境变量时将ToolsPath属性设置为ToolsPath:<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>