Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev/f alizada/move env variables to doc #9812

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 29 additions & 9 deletions documentation/wiki/MSBuild-Environment-Variables.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,32 @@
# MSBuild environment variables
# MSBuild environment variables list

- [MsBuildSkipEagerWildCardEvaluationRegexes](#msbuildskipeagerwildcardevaluationregexes)
This document describes the environment variables that are respected in MSBuild, its purpose and usage.
Some of the env variables listed here are unsupported, meaning there is no guarantee that variable or a specific combination of multiple variables will be respected in upcoming release, so please use at your own risk.

* `MSBuildDebugEngine=1` & `MSBUILDDEBUGPATH=<DIRECTORY>`
* Set this to cause any MSBuild invocation launched within this environment to emit binary logs and additional debugging information to `<DIRECTORY>`. Useful when debugging build or evaluation issues when you can't directly influence the MSBuild invocation, such as in Visual Studio. More details on [capturing binary logs](./Providing-Binary-Logs.md)
* `MSBUILDTARGETOUTPUTLOGGING=1`
* Set this to enable [printing all target outputs to the log](https://learn.microsoft.com/archive/blogs/msbuild/displaying-target-output-items-using-the-console-logger).
* `MSBUILDLOGTASKINPUTS=1`
* Log task inputs (not needed if there are any diagnostic loggers already).
* `MSBUILDEMITSOLUTION=1`
* Save the generated .proj file for the .sln that is used to build the solution. The generated files are emitted into a binary log by default and their presence on disk can break subsequent builds.
* `MSBUILDENABLEALLPROPERTYFUNCTIONS=1`
* Enable [additional property functions](https://devblogs.microsoft.com/visualstudio/msbuild-property-functions/). If you need this level of detail you are generally served better with a binary log than the text log.
* `MSBUILDLOGVERBOSERARSEARCHRESULTS=1`
* In ResolveAssemblyReference task, log verbose search results.
* `MSBUILDLOGCODETASKFACTORYOUTPUT=1`
* Dump generated code for task to a <GUID>.txt file in the TEMP directory
* `MSBUILDDISABLENODEREUSE=1`
* Set this to not leave MSBuild processes behind (see `/nr:false`, but the environment variable is useful to also set this for Visual Studio for example).
* `MSBUILDLOGASYNC=1`
* Enable asynchronous logging.
* `MSBUILDDEBUGONSTART=1`
* Launches debugger on build start. Works on Windows operating systems only.
* Setting the value of 2 allows for manually attaching a debugger to a process ID. This works on Windows and non-Windows operating systems.
* `MSBUILDDEBUGSCHEDULER=1` & `MSBUILDDEBUGPATH=<DIRECTORY>`
* Dumps scheduler state at specified directory (`MSBUILDDEBUGSCHEDULER` is implied by `MSBuildDebugEngine`).

### MsBuildSkipEagerWildCardEvaluationRegexes

If specified, overrides the default behavior of glob expansion.

During glob expansion, if the path with wildcards that is being processed matches one of the regular expressions provided in the [environment variable](#msbuildskipeagerwildcardevaluationregexes), the path is not processed (expanded).

The value of the envvironment variable is a list of regular expressions, separated by semilcon (;).
* `MsBuildSkipEagerWildCardEvaluationRegexes`
* If specified, overrides the default behavior of glob expansion. During glob expansion, if the path with wildcards that is being processed matches one of the regular expressions provided in the [environment variable](#msbuildskipeagerwildcardevaluationregexes), the path is not processed (expanded).
* The value of the environment variable is a list of regular expressions, separated by semicolon (;).
24 changes: 1 addition & 23 deletions documentation/wiki/MSBuild-Tips-&-Tricks.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,29 +14,7 @@ See the [MSBuild Command-Line Reference](https://learn.microsoft.com/visualstudi

# Environment Variables

* `MSBuildDebugEngine=1` & `MSBUILDDEBUGPATH=<DIRECTORY>`
* Set this to cause any MSBuild invocation launched within this environment to emit binary logs and additional debugging information to `<DIRECTORY>`. Useful when debugging build or evaluation issues when you can't directly influence the MSBuild invocation, such as in Visual Studio.
* `MSBUILDTARGETOUTPUTLOGGING=1`
* Set this to enable [printing all target outputs to the log](https://learn.microsoft.com/archive/blogs/msbuild/displaying-target-output-items-using-the-console-logger).
* `MSBUILDLOGTASKINPUTS=1`
* Log task inputs (not needed if there are any diagnostic loggers already).
* `MSBUILDEMITSOLUTION=1`
* Save the generated .proj file for the .sln that is used to build the solution.
* `MSBUILDENABLEALLPROPERTYFUNCTIONS=1`
* Enable [additional property functions](https://devblogs.microsoft.com/visualstudio/msbuild-property-functions/).
* `MSBUILDLOGVERBOSERARSEARCHRESULTS=1`
* In ResolveAssemblyReference task, log verbose search results.
* `MSBUILDLOGCODETASKFACTORYOUTPUT=1`
* Dump generated code for task to a <GUID>.txt file in the TEMP directory
* `MSBUILDDISABLENODEREUSE=1`
* Set this to not leave MSBuild processes behind (see `/nr:false` above, but the environment variable is useful to also set this for Visual Studio for example).
* `MSBUILDLOGASYNC=1`
* Enable asynchronous logging.
* `MSBUILDDEBUGONSTART=1`
* Launch debugger on build start.
* Setting the value of 2 allows for manually attaching a debugger to a process ID.
* `MSBUILDDEBUGSCHEDULER=1` & `MSBUILDDEBUGPATH=<DIRECTORY>`
* Dumps scheduler state at specified directory (`MSBUILDDEBUGSCHEDULER` is implied by `MSBuildDebugEngine`).
The list of environment variables could be found [here](./MSBuild-Environment-Variables.md)

# TreatAsLocalProperty
If MSBuild.exe is passed properties on the command line, such as `/p:Platform=AnyCPU` then this value overrides whatever assignments you have to that property inside property groups. For instance, `<Platform>x86</Platform>` will be ignored. To make sure your local assignment to properties overrides whatever they pass on the command line, add the following at the top of your MSBuild project file:
Expand Down