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: 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:= Set or override these project-level properties. is the property name, and 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] 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: 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: 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. -consoleLoggerParameters: 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 -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]: 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:* 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 syntax is: [,][,][;] The syntax is: [.] The syntax is: {[,] | } Logger options specify how MSBuild creates the logger. The 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 -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.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: Use this logger to log events from MSBuild. To specify multiple loggers, specify each logger separately. The syntax is: [,][,][;] The syntax is: [.] The syntax is: {[,] | } Logger options specify how MSBuild creates the logger. The 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 -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 -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 -ignoreProjectExtensions: 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: 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 -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) -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) -restoreProperty:= Set or override these project-level properties only during restore and do not use properties specified with the -property argument. is the property name, and 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 -profileEvaluation: 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. -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. -inputResultsCaches:... 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) -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. -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) @ 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 -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) 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 .NET Cli Options: --disable-build-servers Force the command to ignore any persistent build servers.