Skip to content

Instantly share code, notes, and snippets.

@nox40
Created December 11, 2024 07:51
Show Gist options
  • Select an option

  • Save nox40/221e6c9ce55d898dd1ab96e1f8942f27 to your computer and use it in GitHub Desktop.

Select an option

Save nox40/221e6c9ce55d898dd1ab96e1f8942f27 to your computer and use it in GitHub Desktop.
%ProgramFiles%\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild /help
MSBuild version 17.12.12+1cce77968 for .NET Framework
Syntax: MSBuild.exe [options] [project file | directory]
Description: Builds the specified targets in the project file. If
a project file is not specified, MSBuild searches the
current working directory for a file that has a file
extension that ends in "proj" and uses that file. If
a directory is specified, MSBuild searches that
directory for a project file.
Switches: Note that you can specify switches using
"-switch", "/switch" and "--switch".
-target:<targets> Build these targets in this project. Use a semicolon or a
comma to separate multiple targets, or specify each
target separately. (Short form: -t)
Example:
-target:Resources;Compile
-property:<n>=<v> Set or override these project-level properties. <n> is
the property name, and <v> is the property value. Use a
semicolon or a comma to separate multiple properties, or
specify each property separately. (Short form: -p)
Example:
-property:WarningLevel=2;OutDir=bin\Debug\
-logger:<logger> Use this logger to log events from MSBuild. To specify
multiple loggers, specify each logger separately.
The <logger> syntax is:
[<class>,]<assembly>[,<options>][;<parameters>]
The <logger class> syntax is:
[<partial or full namespace>.]<logger class name>
The <logger assembly> syntax is:
{<assembly name>[,<strong name>] | <assembly file>}
Logger options specify how MSBuild creates the logger.
The <logger parameters> are optional, and are passed
to the logger exactly as you typed them. (Short form: -l)
Examples:
-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral
-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-distributedLogger:<central logger>*<forwarding logger>
Use this logger to log events from MSBuild, attaching a
different logger instance to each node. To specify
multiple loggers, specify each logger separately.
(Short form -dl)
The <logger> syntax is:
[<class>,]<assembly>[,<options>][;<parameters>]
The <logger class> syntax is:
[<partial or full namespace>.]<logger class name>
The <logger assembly> syntax is:
{<assembly name>[,<strong name>] | <assembly file>}
Logger options specify how MSBuild creates the logger.
The <logger parameters> are optional, and are passed
to the logger exactly as you typed them. (Short form: -l)
Examples:
-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral
-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
-verbosity:<level> Display this amount of information in the event log.
The available verbosity levels are: q[uiet], m[inimal],
n[ormal], d[etailed], and diag[nostic]. (Short form: -v)
Example:
-verbosity:quiet
Note: File loggers' verbosity
is set separately by
-fileloggerparameters.
-validate Validate the project against the default schema. (Short
form: -val)
-validate:<schema> Validate the project against the specified schema. (Short
form: -val)
Example:
-validate:MyExtendedBuildSchema.xsd
-consoleLoggerParameters:<parameters>
Parameters to console logger. (Short form: -clp)
The available parameters are:
PerformanceSummary--Show time spent in tasks, targets
and projects.
Summary--Show error and warning summary at the end.
NoSummary--Don't show error and warning summary at the
end.
ErrorsOnly--Show only errors.
WarningsOnly--Show only warnings.
NoItemAndPropertyList--Don't show list of items and
properties at the start of each project build.
ShowCommandLine--Show TaskCommandLineEvent messages
ShowTimestamp--Display the Timestamp as a prefix to any
message.
ShowEventId--Show eventId for started events, finished
events, and messages
ForceNoAlign--Does not align the text to the size of
the console buffer
DisableConsoleColor--Use the default console colors
for all logging messages.
DisableMPLogging-- Disable the multiprocessor
logging style of output when running in
non-multiprocessor mode.
EnableMPLogging--Enable the multiprocessor logging
style even when running in non-multiprocessor
mode. This logging style is on by default.
ForceConsoleColor--Use ANSI console colors even if
console does not support it
PreferConsoleColor--Use ANSI console colors only if
target console does support it
Verbosity--overrides the -verbosity setting for this
logger.
Example:
-consoleLoggerParameters:PerformanceSummary;NoSummary;
Verbosity=minimal
-maxCpuCount[:n] Specifies the maximum number of concurrent processes to
build with. If the switch is not used, the default
value used is 1. If the switch is used without a value
MSBuild will use up to the number of processors on the
computer. (Short form: -m[:n])
-ignoreProjectExtensions:<extensions>
List of extensions to ignore when determining which
project file to build. Use a semicolon or a comma
to separate multiple extensions.
(Short form: -ignore)
Example:
-ignoreProjectExtensions:.sln
-toolsVersion:<version>
The version of the MSBuild Toolset (tasks, targets, etc.)
to use during build. This version will override the
versions specified by individual projects. (Short form:
-tv)
Example:
-toolsVersion:3.5
-fileLoggerParameters[n]:<parameters>
Provides any extra parameters for file loggers.
The presence of this switch implies the
corresponding -fileLogger[n] switch.
"n" if present can be a digit from 1-9.
-fileLoggerParameters is also used by any distributed
file logger, see description of -distributedFileLogger.
(Short form: -flp[n])
The same parameters listed for the console logger are
available. Some additional available parameters are:
LogFile--path to the log file into which the
build log will be written.
Append--determines if the build log will be appended
to or overwrite the log file. Setting the
switch appends the build log to the log file;
Not setting the switch overwrites the
contents of an existing log file.
The default is not to append to the log file.
Encoding--specifies the encoding for the file,
for example, UTF-8, Unicode, or ASCII
Default verbosity is Detailed.
Examples:
-fileLoggerParameters:LogFile=MyLog.log;Append;
Verbosity=diagnostic;Encoding=UTF-8
-flp:Summary;Verbosity=minimal;LogFile=msbuild.sum
-flp1:warningsonly;logfile=msbuild.wrn
-flp2:errorsonly;logfile=msbuild.err
-terminalLogger[:auto,on,off]
Enable or disable the terminal logger. Terminal logger
provides enhanced build output on the console in real time,
organized logically by project, and designed to highlight
actionable information. Specify auto (or use the option
without arguments) to use the terminal logger only if the
standard output is not redirected. Don't parse the output
or otherwise rely on it remaining unchanged in future
versions. This option is available in MSBuild 17.8 and
later.
(Short form: -tl)
-terminalLoggerParameters: <parameters>
Parameters to terminal logger. (Short form: -tlp)
The available parameters.
default--Specifies the default behavior of the terminal
logger. It requires one of the following values:
- `on`, `true` forces TerminalLogger to be used even
when it would be disabled.
- `off`, `false` forces TerminalLogger to not be used
even when it would be enabled.
- `auto` enables TerminalLogger when the terminal
supports it and the session doesn't have redirected
stdout/stderr
verbosity--Override the -verbosity setting for this
logger
showCommandLine--Show TaskCommandLineEvent messages
Example:
-tlp:default=auto;verbosity=diag;shownCommandLine
-nodeReuse:<parameters>
Enables or Disables the reuse of MSBuild nodes.
The parameters are:
True --Nodes will remain after the build completes
and will be reused by subsequent builds (default)
False--Nodes will not remain after the build completes
(Short form: -nr)
Example:
-nr:true
-preprocess[:file]
Creates a single, aggregated project file by
inlining all the files that would be imported during a
build, with their boundaries marked. This can be
useful for figuring out what files are being imported
and from where, and what they will contribute to
the build. By default the output is written to
the console window. If the path to an output file
is provided that will be used instead.
(Short form: -pp)
Example:
-pp:out.txt
-targets[:file]
Prints a list of available targets without executing the
actual build process. By default the output is written to
the console window. If the path to an output file
is provided that will be used instead.
(Short form: -ts)
Example:
-ts:out.txt
-warnAsError[:code[;code2]]
List of warning codes to treats as errors. Use a semicolon
or a comma to separate multiple warning codes. To treat all
warnings as errors use the switch with no values.
(Short form: -err[:c;[c2]])
Example:
-warnAsError:MSB4130
When a warning is treated as an error the target will
continue to execute as if it was a warning but the overall
build will fail.
-warnNotAsError[:code[;code2]]
List of warning codes to treats not treat as errors.
Use a semicolon or a comma to separate
multiple warning codes. Has no effect if the -warnaserror
switch is not set.
Example:
-warnNotAsError:MSB3026
-warnAsMessage[:code[;code2]]
List of warning codes to treats as low importance
messages. Use a semicolon or a comma to separate
multiple warning codes.
(Short form: -noWarn[:c;[c2]])
Example:
-warnAsMessage:MSB3026
-binaryLogger[:[LogFile=]output.binlog[;ProjectImports={None,Embed,ZipFile}]]
Serializes all build events to a compressed binary file.
By default the file is in the current directory and named
"msbuild.binlog". The binary log is a detailed description
of the build process that can later be used to reconstruct
text logs and used by other analysis tools. A binary log
is usually 10-20x smaller than the most detailed text
diagnostic-level log, but it contains more information.
(Short form: -bl)
The binary logger by default collects the source text of
project files, including all imported projects and target
files encountered during the build. The optional
ProjectImports switch controls this behavior:
ProjectImports=None - Don't collect the project
imports.
ProjectImports=Embed - Embed project imports in the
log file.
ProjectImports=ZipFile - Save project files to
output.projectimports.zip
where output is the same name
as the binary log file name.
The default setting for ProjectImports is Embed.
Note: the logger does not collect non-MSBuild source files
such as .cs, .cpp etc.
A .binlog file can be "played back" by passing it to
msbuild.exe as an argument instead of a project/solution.
Other loggers will receive the information contained
in the log file as if the original build was happening.
You can read more about the binary log and its usages at:
https://aka.ms/msbuild/binlog
Examples:
-bl
-bl:output.binlog
-bl:output.binlog;ProjectImports=None
-bl:output.binlog;ProjectImports=ZipFile
-bl:..\..\custom.binlog
-binaryLogger
-check
Enables BuildChecks during the build.
BuildCheck enables evaluating rules to ensure properties
of the build. For more info see aka.ms/buildcheck
-restore[:True|False]
Runs a target named Restore prior to building
other targets and ensures the build for these
targets uses the latest restored build logic.
This is useful when your project tree requires
packages to be restored before it can be built.
Specifying -restore is the same as specifying
-restore:True. Use the parameter to override
a value that comes from a response file.
(Short form: -r)
-profileEvaluation:<file>
Profiles MSBuild evaluation and writes the result
to the specified file. If the extension of the specified
file is '.md', the result is generated in markdown
format. Otherwise, a tab separated file is produced.
-restoreProperty:<n>=<v>
Set or override these project-level properties only
during restore and do not use properties specified
with the -property argument. <n> is the property
name, and <v> is the property value. Use a
semicolon or a comma to separate multiple properties,
or specify each property separately.
(Short form: -rp)
Example:
-restoreProperty:IsRestore=true;MyProperty=value
-interactive[:True|False]
Indicates that actions in the build are allowed to
interact with the user. Do not use this argument
in an automated scenario where interactivity is
not expected.
Specifying -interactive is the same as specifying
-interactive:true. Use the parameter to override a
value that comes from a response file.
-isolateProjects[:True|MessageUponIsolationViolation|False]
Causes MSBuild to build each project in isolation.
When set to "MessageUponIsolationViolation" (or its short
form "Message"), only the results from top-level targets
are serialized if the -outputResultsCache switch is
supplied. This is to mitigate the chances of an
isolation-violating target on a dependency project using
incorrect state due to its dependency on a cached target
whose side effects would not be taken into account.
(For example, the definition of a property.)
This is a more restrictive mode of MSBuild as it requires
that the project graph be statically discoverable at
evaluation time, but can improve scheduling and reduce
memory overhead when building a large set of projects.
(Short form: -isolate)
This flag is experimental and may not work as intended.
-graphBuild[:True|False]
Causes MSBuild to construct and build a project graph.
Constructing a graph involves identifying project
references to form dependencies. Building that graph
involves attempting to build project references prior
to the projects that reference them, differing from
traditional MSBuild scheduling.
(Short form: -graph)
This flag is experimental and may not work as intended.
-inputResultsCaches:<cacheFile>...
Semicolon separated list of input cache files that MSBuild
will read build results from. If -isolateProjects is set
to False, this sets it to True. (short form: -irc)
-outputResultsCache:[cacheFile]
Output cache file where MSBuild will write the contents of
its build result caches at the end of the build.
If -isolateProjects is set to False, this sets it to True.
(short form: -orc)
-reportFileAccesses[:True|False]
Causes MSBuild to report file accesses to any configured
project cache plugins.
This flag is experimental and may not work as intended.
-lowPriority[:True|False]
Causes MSBuild to run at low process priority.
Specifying -lowPriority is the same as specifying
-lowPriority:True.
(Short form: -low)
-question
(Experimental) Question whether there is any build work.
MSBuild will error out when it detects a target or task
that can be incremental (has inputs and outputs),
but isn't up to date.
(Short form: -q)
-detailedSummary[:True|False]
Shows detailed information at the end of the build
about the configurations built and how they were
scheduled to nodes.
(Short form: -ds)
-getProperty:propertyName,...
Write out the value of one or more specified properties
after evaluation, without executing the build, or if either
the -targets option or the -getTargetResult option is
used, write out the values after the build.
-getItem:itemName,...
Write out the value of one or more specified items and
their associated metadata after evaluation without
executing the build, or if either the -targets option
or the -getTargetResult option is used, write out
the values after the build.
-getTargetResult:targetName,...
Write out the output value of one or more targets and
the specified targets will be executed.
-getResultOutputFile:file
Redirect output from get* into a file.
Example:
-getProperty:Bar -getResultOutputFile:Biz.txt
This writes the value of property Bar into Biz.txt.
-featureAvailability:featureName,...
Check feature availability. The result is one of the
strings "Undefined", "Available", "NotAvailable" and
"Preview".
- Undefined - the availability of the feature is undefined
(the feature name is unknown to the feature availability
checker)
- NotAvailable - the feature is not available (unlike
Undefined, the feature name is known to the feature
availability checker and it knows the feature is not
supported by current MSBuild engine)
- Available - the feature is available
- Preview - the feature is in preview (not stable)
(Short form: -fa)
-help Display this usage message. (Short form: -? or -h)
-version Display version information only. (Short form: -ver)
-noLogo Do not display the startup banner and copyright message.
-noAutoResponse Do not auto-include any MSBuild.rsp files. (Short form:
-noAutoRsp)
-noConsoleLogger Disable the default console logger and do not log events
to the console. (Short form: -noConLog)
-fileLogger[n] Logs the build output to a file. By default
the file is in the current directory and named
"msbuild[n].log". Events from all nodes are combined into
a single log. The location of the file and other
parameters for the fileLogger can be specified through
the addition of the "-fileLoggerParameters[n]" switch.
"n" if present can be a digit from 1-9, allowing up to
10 file loggers to be attached. (Short form: -fl[n])
-distributedFileLogger
Logs the build output to multiple log files, one log file
per MSBuild node. The initial location for these files is
the current directory. By default the files are called
"MSBuild<nodeid>.log". The location of the files and
other parameters for the fileLogger can be specified
with the addition of the "-fileLoggerParameters" switch.
If a log file name is set through the fileLoggerParameters
switch the distributed logger will use the fileName as a
template and append the node id to this fileName to
create a log file for each node.
@<file> Insert command-line settings from a text file. To specify
multiple response files, specify each response file
separately.
Any response files named "msbuild.rsp" are automatically
consumed from the following locations:
(1) the directory of msbuild.exe
(2) the directory of the first project or solution built
Examples:
MSBuild MyApp.sln -t:Rebuild -p:Configuration=Release
MSBuild MyApp.csproj -t:Clean
-p:Configuration=Debug;TargetFrameworkVersion=v3.5
For more detailed information, see https://aka.ms/msbuild/docs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment