Справочник по командной строке MSBuild

При использовании MSBuild.exe для создания файла проекта или решения можно включить несколько переключателей для указания различных аспектов процесса.

Каждый переключатель доступен в двух формах: -switch и /switch. В документации показана только форма -switch. Параметры обрабатываются без учета регистра. При запуске MSBuild из оболочки, отличной от командной строки Windows, список аргументов для параметра (разделенных точкой с запятой или запятыми) может потребовать одинарные или двойные кавычки, чтобы гарантировать передачу списков в MSBuild вместо их интерпретации оболочкой.

Синтаксис

MSBuild.exe [Switches] [ProjectFile]

Аргументы

Аргумент Description
ProjectFile Создает целевые объекты в указанном файле проекта. Если не указать файл проекта, MSBuild выполнит поиск расширения имени файла, который заканчивается на proj, и использует этот файл в текущем рабочем каталоге. Можно также указать файл решения Visual Studio для этого аргумента.

коммутаторы;

Switch Краткая форма Description
-detailedSummary[:True or False] -ds[:True or False] Если значение равно True, отображать подробные сведения о созданных конфигурациях и их запланированное использование в узлах в конце журнала сборки.
-getItem:itemName,... Выпишите значение элемента или элементов после оценки, не выполняя сборку, или если -targets используется параметр или -getTargetResult параметр, выпишите значения после сборки.
-getProperty:propertyName,... Выпишите значение свойства или свойств после оценки, не выполняя сборку, или если -targets используется параметр или -getTargetResult параметр, выпишите значения после сборки.
-getTargetResult:targetName,... Выпишите выходные значения указанных целевых объектов.
-graphBuild[:True или False] -graph[:True или False] Указывает MSBuild создать и построить граф проекта. Построение графа включает определение ссылок проекта для образования зависимостей. Построение этого графа включает попытку сборки ссылок проекта до проектов, ссылающихся на них, в отличие от традиционного графика MSBuild. Требуется MSBuild 16 или более поздней версии.
-help /? или -h Отображает сведения об использовании. Ниже представлен пример команды.

msbuild.exe -?
-ignoreProjectExtensions: extensions -ignore: extensions Игнорировать указанные расширения при определении создаваемого файла проекта. Используйте точку с запятой или запятую для разделения нескольких расширений, как показано в следующем примере:

-ignoreprojectextensions:.vcproj,.sln
-inputResultsCaches[:cacheFile[;cacheFile2] -irc[:cacheFile[;cacheFile2] Разделенный точкой с запятой список файлов входного кэша, из которым MSBuild считывает результаты сборки. Если -isolateProjects задано значение , этот параметр Falseзадает для него значение True.
-interactive[:True или False] - Указывает, что действия в сборке могут взаимодействовать с пользователем. Не используйте этот аргумент в автоматизированном сценарии, где интерактивность не ожидается. Указание параметра -interactive аналогично указанию параметра -interactive:true. Используйте параметр, чтобы переопределить значение, переданное из файла ответов.
-isolateProjects[илиTrueMessageUponIsolationViolationFalse] -isolate[:True или MessageUponIsolationViolationFalse] Указывает MSBuild собрать каждый проект изолированно. Если задано MessageUponIsolationViolation значение (или его короткая форма Message), сериализуются только результаты из целевых объектов верхнего уровня, если -outputResultsCache параметр предоставлен. Этот параметр позволяет снизить вероятность нарушения изоляции целевого объекта в проекте зависимостей с использованием неправильного состояния из-за его зависимости от кэшированного целевого объекта, побочные эффекты которого не будут учитываться. (Например, определение свойства.) Этот режим является более строгим, так как он требует, чтобы граф проекта был статически обнаруживаемым во время оценки, но может улучшить планирование и уменьшить затраты на память при создании большого набора проектов.
-lowPriority[:True или False] -low[:True или False] Вызывает запуск MSBuild с низким приоритетом процесса. Указание -lowPriority дает тот же результат, что и указание -lowPriority:True.
-maxCpuCount[:number] -m[:number] Указывает максимальное количество параллельных процессов для использования при создании. Если переключатель не указан, значение по умолчанию равно 1. Если этот параметр включен без указания значения, MSBuild использует до количества процессоров на компьютере. Дополнительные сведения см. в разделе Параллельное построение нескольких проектов.

В следующем примере MSBuild использует для создания три процесса MSBuild, что позволяет создать три проекта одновременно:

msbuild myproject.proj -maxcpucount:3
-noAutoResponse -noautorsp Не следует автоматически включать файлы MSBuild.rsp или Directory.Build.rsp.
-nodeReuse:value -nr:value Включите или отключите повторное использование узлов MSBuild. Можно указать следующие значения:

- True. Узлы сохраняются после создания, чтобы последующие сборки могли использовать их (по умолчанию).
- False. Узлы не сохраняются после создания.

Узел соответствует выполняющемуся проекту. Если добавить переключатель -maxcpucount, несколько узлов могут выполняться одновременно.
-nologo Не отображать загрузочный баннер или сообщение об авторских правах.
-preprocess[:filepath] -pp[:filepath] Создать один сводный файл проекта, встроив все файлы, которые будут импортированы во время создания, с отмеченными границами. Этот переключатель можно использовать для более простого определения импортируемых файлов, расположения, из которого выполняется импорт, и файлов, участвующих в сборке. При использовании этого переключателя проект не создается.

Если вы укажете filepath, сводный файл проекта выведет данные в файл. В противном случае выходные данные появятся в окне консоли.

Сведения об использовании элемента Import для вставки файла проекта в другой файл проекта см. в разделах Элемент Import (MSBuild) и Практическое руководство. Использование одного и того же целевого объекта в нескольких файлах проектов.
-outputResultsCache[:cacheFile] -orc[:cacheFile] Файл кэша выходных данных, в котором MSBuild записывает содержимое кэша результатов сборки в конце сборки. Если -isolateProjects задано значение , этот параметр Falseзадает для него значение True.
-profileEvaluation:<file> - Профилирует оценку MSBuild и записывает результат в указанный файл. Если указанный файл имеет расширение MD, результат создается в формате Markdown. В противном случае создается файл с разделением табуляцией.
-property:name=value -p:name=value Задать или переопределить указанные свойства уровня проекта, где name является именем свойства, а value — значением свойства. Укажите каждое свойство отдельно или используйте точку с запятой или запятую для разделения нескольких свойств, как показано в следующем примере:

-property:WarningLevel=2;OutDir=bin\Debug
-restore -r Запустите целевой объект Restore до построения фактических целевых объектов.
-restoreProperty:name=value -rp:name=value Задайте или переопределите эти свойства уровня проекта только во время восстановления и не используйте свойства, указанные с аргументом -property. name — это имя свойства, а value — значение свойства. Используйте точку с запятой или запятую для разделения нескольких свойств или укажите каждое свойство отдельно.
-target:targets -t:targets Создать указанные целевые объекты в проекте. Укажите каждый целевой объект отдельно или используйте точку с запятой или запятую для разделения нескольких целевых объектов, как показано в следующем примере.

-target:PrepareResources;Compile

Если вы указываете какие-либо целевые объекты с помощью этого параметра, они выполняются вместо любых целевых объектов в атрибуте DefaultTargets в файле проекта. Дополнительные сведения см. в статьях Порядок сборки целевого объекта и Практическое руководство. Выбор целевого объекта для первой сборки.

Целевой объект — это группа задач. Дополнительные сведения см. в разделе Целевые объекты.
-targets[:file] -ts[:file] Записать список доступных целевых объектов в указанный файл (или на устройство вывода, если файл не задан). При этом процесс сборки фактически не выполняется.
-toolsVersion:version -tv:version Задает настраиваемый набор инструментов. Набор инструментов состоит из задач, целевых объектов и инструментов, которые используются для создания приложения. См . набор инструментов (ToolsVersion) и стандартные и настраиваемые конфигурации набора инструментов.
-validate:[schema] -val[schema] Проверить файл проекта и, если проверка прошла успешно, создать проект.

Если не указать schema, проект проверяется по схеме, заданной по умолчанию.

При указании schema проект проверяется по указанной вами схеме.

Примером является следующий параметр: -validate:MyExtendedBuildSchema.xsd.
-verbosity:level -v:level Указывает объем сведений, отображаемый в журнале сборки. Каждое средство ведения журнала отображает события, в соответствии с уровнем детализации, заданным для этого средства ведения журнала.

Можно указать следующие уровни детализации: q[uiet], m[inimal], n[ormal] (по умолчанию), d[etailed] и diag[nostic].

Примером является следующий параметр: -verbosity:quiet.
-version ver- Отобразить только сведения о версии. Проект не создается.
@file Вставить параметры командной строки из текстового файла. Если имеется несколько файлов, можно указать их отдельно. Дополнительные сведения см. в статье Файлы ответов MSBuild.
-warnAsError[:code[;code2] -err[:code[;code2] Список кодов предупреждений, которые обрабатываются как ошибки. Для разделения нескольких кодов предупреждений используйте точку с запятой или запятую. Чтобы обрабатывать все предупреждения как ошибки, используйте параметр без значений. Если предупреждение обрабатывается как ошибка, целевой объект продолжает выполняться так, как если бы это было предупреждением, но общая сборка завершается ошибкой.

Пример: -err:MSB4130
-warnNotAsError[:code[;code2] -noerr[:code[;code2] Список кодов предупреждений, которые не должны быть повышены до ошибок. В частности, если параметр warnAsError настроен для повышения уровня всех предупреждений до ошибок, коды ошибок, указанные в warnNotAsError, не повышаются. Это не действует, если предупреждениеAsError не задано для повышения всех предупреждений до ошибок. Для разделения нескольких кодов предупреждений используйте точку с запятой или запятую.

Пример: -noerr:MSB4130
-warnAsMessage[:code[;code2] -noWarn[:code[;code2] Список кодов предупреждений, которые обрабатываются как сообщения с низким уровнем важности. Для разделения нескольких кодов предупреждений используйте точку с запятой или запятую.

Пример: -noWarn:MSB3026

Параметры для средств ведения журнала

Switch Краткая форма Description
-binaryLogger[:[LogFile=]output.binlog
[;ProjectImports=[None,Embed,ZipFile]]]
-bl Сериализует все события сборки в сжатый двоичный файл. По умолчанию файл находится в текущем каталоге и с именем msbuild.binlog. Двоичный журнал является подробным описанием процесса сборки, который можно впоследствии применять для воссоздания текстовых журналов и использования другими инструментами анализа. Двоичный журнал обычно в 10–20 раз меньше самого детализированного текстового журнала уровня диагностики, но он содержит больше информации.

Средство ведения двоичного журнала по умолчанию собирает исходный текст файлов проекта, включая все импортированные проекты и целевые файлы, найденные во время сборки. Это поведение контролируется обязательным параметром ProjectImports:

- ProjectImports=None. Не объединять импортируемые пространства имен проекта.
- ProjectImports=Embed. Внедрить импортируемые пространства имен проекта в файл журнала (по умолчанию).
- ProjectImports=ZipFile. Сохранить файлы проекта в <output>.projectimports.zip, где <output> — имя, совпадающее с именем двоичного файла журнала.

Значение по умолчанию для ProjectImports — "Embed".
Примечание. Средство ведения журнала не собирает исходные файлы, отличные от MSBuild, такие как .cs, .cpp и т. д.
Файл .binlog можно "воспроизвести", передав его в msbuild.exe в качестве аргумента, а не решения или проекта. Другие средства ведения журнала получают сведения, содержащиеся в файле журнала, как если бы исходная сборка произошла. Дополнительные сведения о двоичном журнале и способах его использования можно найти на следующей странице: https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md

Примеры:
- -bl
- -bl:output.binlog
- -bl:output.binlog;ProjectImports=None
- -bl:output.binlog;ProjectImports=ZipFile
- -bl:..\..\custom.binlog
- -binaryLogger
-consoleLoggerParameters:

parameters
-clp:parameters Передать указанные параметры в средство ведения журнала консоли, в окне консоли которого отображаются сведения о сборке. Ниже приведены параметры, которые вы можете указать:

- PerformanceSummary. Отобразить время, затраченное на выполнение задач, целей и проектов.
- Сводка. Показать сводку ошибок и предупреждений в конце.
- NoSummary. Не показывать сводку ошибок и предупреждений в конце.
- ErrorsOnly. Показать только ошибки.
- WarningsOnly. Показать только предупреждения.
- NoItemAndPropertyList. Не показывать список элементов и свойств, появляющийся в начале каждой сборки проекта, если значение уровня детализации — diagnostic.
- ShowCommandLine. Показать сообщения TaskCommandLineEvent.
- ShowProjectFile. Отображение пути к файлу проекта в диагностических сообщениях. Этот параметр включен по умолчанию.
- ShowTimestamp. Показывать метку времени в качестве префикса для любого сообщения.
- ShowEventId. Показать идентификатор события для каждого запущенного события, завершенного события и сообщения.
- ForceNoAlign. Не выравнивать текст по размеру буфера консоли.
- DisableConsoleColor. Использовать цвета консоли по умолчанию для всех сообщений журнала.
- DisableMPLogging. Отключить многопроцессорное ведение журнала выходных данных в режиме, отличном от многопроцессорного.
- EnableMPLogging. Включить многопроцессорное ведение журнала даже при работе в режиме, отличном от многопроцессорного. Такое ведение журнала включено по умолчанию.
- ForceConsoleColor. Используйте цвета консоли ANSI, даже если консоль не поддерживает ее.
- Verbosity. Переопределяет параметр -verbosity, заданный для этого средства ведения журнала.

Используйте точку с запятой для разделения нескольких параметров, как показано в следующем примере.

-consoleloggerparameters:PerformanceSummary;NoSummary -verbosity:minimal

Средство ведения журнала консоли по умолчанию имеет обычную детализацию и включает Summary.
-distributedFileLogger -dfl Записывать выходные данные сборки каждого узла MSBuild в собственный файл. Первоначальным расположением этих файлов является текущий каталог. По умолчанию файлам присваиваются имена MSBuild<идентификатор_узла>.log. Чтобы указать расположение файлов и другие параметры для средства ведения журнала fileLogger, используйте переключатель -fileLoggerParameters.

Если вы назовете файл журнала с помощью переключателя -fileLoggerParameters , распределенный средство ведения журнала использует это имя в качестве шаблона и добавляет идентификатор узла в это имя при создании файла журнала для каждого узла.
-distributedLogger:

central logger

forwarding logger
-dl:central loggerforwarding logger Вести журнал событий из MSBuild, присоединяя разные экземпляры журнала к каждому узлу. Чтобы указать несколько средств ведения журнала, укажите отдельно каждое из них.

Синтаксис средства ведения журнала позволяет указать средство ведения журнала. Синтаксис средства ведения журнала см. в параметре -logger .

В следующих примерах демонстрируется использование этого переключателя.

-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
-fileLogger

[number]
-fl[number] Записать выходные данные сборки в один файл в текущем каталоге. Если не указать number, выходной файл будет назван msbuild.log. Если указать number, именем выходного файла будет msbuild<n>.log, где <n> — number. Значение Number может быть цифрой от 1 до 9.

Чтобы указать расположение файлов и другие параметры для средства ведения журнала fileLogger, используйте переключатель -fileLoggerParameters.
-fileLoggerParameters[number]:

parameters
-flp[ number]: parameters Указывает любые дополнительные параметры для средства ведения журнала файла и распределенного средства ведения журнала файла. Наличие этого параметра подразумевает, что присутствует и соответствующий параметр — filelogger[number]. Значение Number может быть цифрой от 1 до 9.

Можно использовать все параметры, которые указаны для -consoleloggerparameters. Также можно использовать один или несколько следующих параметров:

- LogFile. Путь к файлу журнала, в который записывается журнал сборки. Распределенное средство ведение журнала файла добавляет этот путь к именам файлов журнала.
- Append. Определяет, добавляется ли журнал сборки в файл журнала или перезаписывает его. Если задать переключатель, журнал сборки добавляется в файл журнала. Если переключатель отсутствует, содержимое существующего файла журнала перезаписывается.
Пример: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append
Если явным образом указать значение true или false, то журнал добавляется независимо от параметра. Если параметр добавления не включен, журнал перезаписывается.
В этом случае файл перезаписывается: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log
В этом случае файл добавляется: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=true
В этом случае файл добавляется: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false
- Encoding. Указывает кодировку для файла (например, UTF-8, Юникод или ASCII).

В следующем примере создаются отдельные файлы журнала для предупреждений и ошибок.

-flp1:logfile=errors.txt;errorsonly -flp2:logfile=warnings.txt;warningsonly

Ниже приведены примеры других возможностей.

-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
-logger:

logger
-l:logger Задает средство ведения журнала для записи событий MSBuild. Чтобы указать несколько средств ведения журнала, укажите отдельно каждое из них.

Используйте следующий синтаксис для logger: [``LoggerClass``,]``LoggerAssembly``[;``LoggerParameters``].

Используйте следующий синтаксис для LoggerClass: [``PartialOrFullNamespace``.]``LoggerClassName.

Если сборка содержит ровно одно средство ведения журнала, его класс указывать не нужно.

Используйте следующий синтаксис для LoggerAssembly: {``AssemblyName``[,``StrongName``] &#124;AssemblyFile``}.

Параметры средства ведения журнала являются необязательными и передаются в него точно по мере их ввода.

В следующих примерах используется переключатель -logger.

-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-noConsoleLogger -noconlog Отключить средство ведения журнала консоли по умолчанию и не записывать события на консоль.
-terminalLogger[:auto,,offon] -tl[:auto,,onoff] Включите или отключите средство ведения журнала терминала. Средство ведения журнала терминалов предоставляет расширенные выходные данные сборки в консоли в режиме реального времени, упорядоченные логически по проекту и предназначенные для выделения практических сведений. Укажите auto (или используйте параметр без аргументов) для использования средства ведения журнала терминала только в том случае, если стандартные выходные данные не перенаправляются. Не анализируйте выходные данные или иначе полагаться на нее, оставаясь неизменными в будущих версиях. Этот параметр доступен в MSBuild 17.8 и более поздних версиях.

Пример 1

В следующем примере создается целевой объект rebuild проекта MyProject.proj.

MSBuild.exe MyProject.proj -t:rebuild

Пример 2

Файл MSBuild.exe можно использовать для выполнения более сложных сборок. Например, можно использовать его для создания конкретных целевых объектов определенных проектов в решении. В следующем примере повторно создается проект NotInSolutionFolder и удаляется проект InSolutionFolder, который находится в папке решения Новая_папка.

msbuild SlnFolders.sln -t:NotInSolutionfolder:Rebuild;NewFolder\InSolutionFolder:Clean

См. также