How to: Use Environment Variables in a Build
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
When you build projects, it is often necessary to set build options using information that is not in the project file or the files that comprise your project. This information is typically stored in environment variables.
Referencing Environment Variables
All environment variables are available to the Microsoft Build Engine (MSBuild) project file as properties.
Note
If the project file contains an explicit definition of a property that has the same name as an environment variable, the property in the project file overrides the value of the environment variable.
To use an environment variable in an MSBuild project
Reference the environment variable the same way you would a variable declared in your project file. For example, the following code references the BIN_PATH environment variable:
<FinalOutput>$(BIN_PATH)\MyAssembly.dll</FinalOutput>
You can use a
Condition
attribute to provide a default value for a property if the environment variable was not set.
To provide a default value for a property
Use a
Condition
attribute on a property to set the value only if the property has no value. For example, the following code sets theToolsPath
property to c:\tools only if theToolsPath
environment variable is not set:<ToolsPath Condition="'$(TOOLSPATH)' == ''">c:\tools</ToolsPath>
Note
Property names are not case-sensitive so both
$(ToolsPath)
and$(TOOLSPATH)
reference the same property or environment variable.
Example
The following project file uses environment variables to specify the location of directories.
<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>