msbuild(1)

πŸ“¦ version 16.10.1.xamarinxplat.2021.05.26.14.00, in arch rolling, nixos 26.05, nixpkgs unstable

πŸ’… msbuild β€” the manual page, bestie edition

okay so this is msbuild(1) from the General Commands Manual section, and honestly? she's iconic. let's get into it 🫢


✨ NAME ✨

msbuild β€” literally the name, that's it, that's the whole section πŸ’– (short and sweet, we love a minimal entrance)


πŸŽ€ SYNOPSIS πŸŽ€

msbuild [options] [project file | directory]

so you're gonna call her with some options, and then optionally a project file or a directory. that's the whole vibe check right there ✨


πŸ¦‹ DESCRIPTION πŸ¦‹

okay bestie, here's the tea: msbuild builds the specified targets in the project file. that's her job, that's her moment, that's her main character energy πŸ‘‘

so if you don't specify a project file? no worries, she's not gonna just sit there. MSBuild will go ahead and search the current working directory for a file that has a file extension that ends in "proj" β€” and then she uses that file. periodt. πŸ”₯

and if you hand her a directory instead of a file? she'll search that directory for a project file. like, she'll go look for it herself. independent queen behavior fr fr πŸ’…

ngl the "extension ends in proj" thing is doing a lot of heavy lifting here β€” that's how she sniffs out what counts as a project file, iykyk 🌸

okay that's part one, more chaos incoming πŸ’œ

✨ OPTIONS ✨

okay so this is the customization era of msbuild(1), and there are so many switches. every one is here, bestie β€” no skips, no β€œyou’ll figure it out” energy. πŸ’…

  • /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/
  • /maxcpucount[:n] β€” Mono’s msbuild does not support parallel builds yet. So, this internally gets set to 1.

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

  • /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
  • /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
  • /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
  • Verbosity β€” overrides the /verbosity setting for this logger.

Example:

/consoleloggerparameters:PerformanceSummary;NoSummary;Verbosity=minimal
  • /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])
  • /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
  • /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:

[<logger class>,]<logger assembly>[;<logger parameters>]

The <logger class> syntax is:

[<partial or full namespace>.]<logger class name>

The <logger assembly> syntax is:

{<assembly name>[,<strong name>] | <assembly file>}

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,/mylibs/My.dll*ForwardingLogger,/mylibs/Loggger.dll
  • /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.

  • /logger:<logger> β€” Use this logger to log events from MSBuild. To specify multiple loggers, specify each logger separately.

The <logger> syntax is:

[<logger class>,]<logger assembly>[;<logger parameters>]

The <logger class> syntax is:

[<partial or full namespace>.]<logger class name>

The <logger assembly> syntax is:

{<assembly name>[,<strong name>] | <assembly file>}

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,/MyLoggers/MyLogger.dll;OutputAsHTML
  • /binaryLogger[:output.binlog] β€” 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)

Examples:

/bl
/bl:output.binlog
/bl:../../custom.binlog
/binaryLogger
  • /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.

  • /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
  • /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
  • /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
  • /detailedsummary β€” Shows detailed information at the end of the build about the configurations built and how they were scheduled to nodes. (Short form: /ds)
  • @<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.dll
  2. the directory of the first project or solution built
  • /noautoresponse β€” Do not auto-include any MSBuild.rsp files. (Short form: /noautorsp)
  • /nologo β€” Do not display the startup banner and copyright message.
  • /version β€” Display version information only. (Short form: /ver)
  • /help β€” Display this usage message. (Short form: /? or /h)

🌈 SEE ALSO 🌈

Okay bestie, the legal bit β€” short but important, don't skip it πŸ’…

Copyright (C) Microsoft Corporation. All rights reserved.

That's it. That's the whole section. No cap. Microsoft Corporation holds the copyright, and all rights are reserved β€” so don't go remixing this into your own thing and pretending you wrote it, that's not the vibe πŸ™ˆ


And that's a wrap on msbuild(1), bestie! 🫢 You made it to the very end β€” main character energy honestly ✨ The page signs off with <bold>msbuild(1)</bold> sitting pretty in the footer, right at the bottom where footers live, and that's your cue to close the manpage and go build something iconic πŸ”₯

go forth and compile, queen πŸ‘‘πŸ’–

πŸ“¦ where this page comes from