Поделиться через


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

When you use MSBuild.exe to build a project or solution file, you can include several switches to specify various aspects of the process.

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

The .NET CLI commands dotnet build, dotnet publish, dotnet msbuild and related commands pass these switches to MSBuild, so this reference is applicable when you use those commands; however dotnet run does not.

Syntax

MSBuild.exe [Switches] [ProjectFile]

Arguments

Argument Description
ProjectFile Создает целевые объекты в указанном файле проекта. If you don't specify a project file, MSBuild searches the current working directory for a file name extension that ends in proj and uses that file. Вы также можете указать файл решения Visual Studio для этого аргумента. В Visual Studio 17.12 и более поздних версиях .slnx формат файла решения поддерживается, а также .sln формат. .slnx Оба .sln и файлы для одного решения могут присутствовать в одном каталоге. Если оба они присутствуют, необходимо явно указать один из них для сборки решения.

Switches

Первый столбец в следующей таблице показывает длинную и короткую форму каждого коммутатора. Обе формы эквивалентны.

Квадратные скобки указывают на необязательные части и фигурные скобки []{}указывают на предоставленные пользователем значения.

Switch Description
-detailedSummary[:{True or False}]

-ds[:{True or False}]
Если Trueв конце журнала сборки отображаются подробные сведения о конфигурациях, созданных и запланированных на узлы.
-getItem:{itemName,...} Выпишите значение элемента или элементов после оценки, не выполняя сборку, или если -targets используется параметр или -getTargetResult параметр, выпишите значения после сборки.
-getProperty:{propertyName,...} Выпишите значение свойства или свойств после оценки, не выполняя сборку, или если -targets используется параметр или -getTargetResult параметр, выпишите значения после сборки.
-getTargetResult:{targetName,...} Выпишите выходные значения указанных целевых объектов.
-graphBuild[:{True or False}]

-graph[:{True or False}]
Приводит к созданию и созданию графа проекта MSBuild. Создание графа включает определение ссылок на проекты для зависимостей форм. Создание графа включает попытку создания ссылок на проекты до проектов, которые ссылались на них, отличаясь от традиционного планирования MSBuild. Требуется MSBuild 16 или более поздней версии.
-help

/? или -h
Отображает сведения об использовании. Следующая команда является примером:

msbuild.exe -?
-ignoreProjectExtensions: {extensions}

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

-ignoreprojectextensions:.vcproj,.sln
-inputResultsCaches[:{cacheFile; ...}]

-irc[:{cacheFile; ...}]
Разделенный точкой с запятой список файлов входного кэша, из которым MSBuild считывает результаты сборки. Если -isolateProjects задано значение , этот параметр Falseзадает для него значение True.
-interactive[:{True or False}] Указывает, что действия в сборке разрешены для взаимодействия с пользователем. Не используйте этот аргумент в автоматизированном сценарии, где интерактивность не ожидается. Указание -interactive совпадает с указанием -interactive:true. Используйте параметр для переопределения значения, полученного из файла ответа.
-isolateProjects[:{True, MessageUponIsolationViolation, False}]

-isolate[:{True, MessageUponIsolationViolation, False}]
Приводит к тому, что MSBuild создает каждый проект в изоляции. Если задано MessageUponIsolationViolation значение (или его короткая форма Message), сериализуются только результаты из целевых объектов верхнего уровня, если -outputResultsCache параметр предоставлен. Этот параметр позволяет снизить вероятность нарушения изоляции целевого объекта в проекте зависимостей с использованием неправильного состояния из-за его зависимости от кэшированного целевого объекта, побочные эффекты которого не будут учитываться. (Например, определение свойства.) Этот режим является более строгим, так как он требует, чтобы граф проекта был статически обнаруживаемым во время оценки, но может улучшить планирование и уменьшить затраты на память при создании большого набора проектов.
-lowPriority[:{True or False}]

-low[:{True or False}]
Вызывает запуск MSBuild с низким приоритетом процесса. Указание -lowPriority совпадает с указанием -lowPriority:True.
-maxCpuCount[:{number}]

-m[:{number}]
Указывает максимальное количество параллельных процессов, используемых при сборке. Если этот параметр не включен, значение по умолчанию равно 1. Если этот параметр включен без указания значения, MSBuild использует до количества процессоров на компьютере. Дополнительные сведения см. в статье "Создание нескольких проектов параллельно".

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

msbuild myproject.proj -maxcpucount:3
-noAutoResponse

-noautorsp
Don't include any MSBuild.rsp or Directory.Build.rsp files automatically.
-nodeReuse:{value}

-nr:{value}
Включите или отключите повторное использование узлов MSBuild. Можно указать следующие значения:

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

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

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

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

Сведения об использовании Import элемента для вставки файла проекта в другой файл проекта см. в разделе Import element (MSBuild) and How to: Use the same target in multiple project files.
-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

Общие свойства проекта MSBuild см. в списке часто используемых свойств. Полный набор доступных свойств зависит от типа проекта, пакета SDK и импортированных файлов.
-restore

-r
Выполняет целевой Restore объект до создания фактических целевых объектов.
-restoreProperty:{name}={value}

-rp:{name}={value}
Задайте или переопределите эти свойства уровня проекта только во время восстановления и не используйте свойства, указанные с аргументом -property . name — это имя свойства и value значение свойства. Используйте точку с запятой или запятую, чтобы разделить несколько свойств или указать каждое свойство отдельно.
-target:{targets}

-t:{targets}
Создайте указанные целевые объекты в проекте. Укажите каждый целевой объект отдельно или используйте запятую или запятую для разделения нескольких целевых объектов, как показано в следующем примере:

-target:PrepareResources;Compile

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

Цель — это группа задач. For more information, see Targets.
-targets[:{file}]

-ts[:{file}]
Напишите список доступных целевых объектов в указанный файл (или выходное устройство, если файл не указан), без фактического выполнения процесса сборки.
-toolsVersion:{version}

-tv:{version}
Задает настраиваемый набор инструментов. Набор инструментов состоит из задач, целевых объектов и инструментов, которые используются для создания приложения. See Toolset (ToolsVersion) and Standard and custom toolset configurations.
-validate:[{schema}]

-val[{schema}]
Проверьте файл проекта и при успешной проверке создайте проект.

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

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

Ниже приведен пример: -validate:MyExtendedBuildSchema.xsd
-verbosity:{level}

-v:{level}
Указывает объем информации, отображаемой в журнале сборки. Каждый средство ведения журнала отображает события на основе уровня детализации, заданного для этого средства ведения журнала.

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

Ниже приведен пример: -verbosity:quiet
-version

-ver
Отображение только сведений о версии. Проект не построен.
@{file} Вставка параметров командной строки из текстового файла. Если у вас несколько файлов, укажите их отдельно. For more information, see Response files.
-warnAsError[:{code; ...}]

-err[:{code; ...}]
Список кодов предупреждений для обработки как ошибок. Используйте точку с запятой или запятую для разделения нескольких кодов предупреждений. Чтобы обрабатывать все предупреждения как ошибки, используйте параметр без значений. Если предупреждение обрабатывается как ошибка, целевой объект продолжает выполняться так, как если бы это было предупреждением, но общая сборка завершается ошибкой.

Пример: -err:MSB4130
-warnNotAsError[:{code; ...}]

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

Пример: -noerr:MSB4130
-warnAsMessage[:{code}; ...}]

-noWarn[:{code; ...}]
Список кодов предупреждений для обработки сообщений с низкой важностью. Используйте точку с запятой или запятую для разделения нескольких кодов предупреждений.

Пример: -noWarn:MSB3026

Переключатели для средств ведения журнала

Switch Description
-binaryLogger[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]

-bl[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]
Сериализует все события сборки в сжатый двоичный файл. By default the file is in the current directory and named msbuild.binlog. Необязательный LogFile параметр принимает строку формы {filename}.binlog, где {filename} содержит допустимые символы файловой системы, но также принимает символ {}заполнителя. Если {} задано, MSBuild заполняет эту позицию уникальной меткой формы yyyyMMdd-HHmmss--<current process id>--<6-character random string>. Двоичный журнал — это подробное описание процесса сборки, который позже можно использовать для восстановления текстовых журналов и использования другими средствами анализа. Двоичный журнал обычно меньше 10–20x, чем самый подробный текстовый журнал диагностики, но содержит дополнительные сведения.

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

- ProjectImports=None. Не собираете импорт проекта.
- ProjectImports=Embed. Внедрение импорта проекта в файл журнала (по умолчанию).
- ProjectImports=ZipFile. Save project files to {output}.projectimports.zip where <output> is the same name as the binary log file name.

Значением по умолчанию для ProjectImports является Внедрение.
Note: the logger doesn't collect non-MSBuild source files such as .cs, .cpp, and so on.
A .binlog file can be "played back" by passing it to msbuild.exe as an argument instead of a project/solution. Другие средства ведения журнала получают сведения, содержащиеся в файле журнала, как если бы исходная сборка произошла. Дополнительные сведения об двоичном журнале и его использовании см. в обзоре журнала двоичных файлов MSBuild.

Examples:
- -bl
- -bl:output.binlog
- -bl:output.binlog;ProjectImports=None
- -bl:output.binlog;ProjectImports=ZipFile
- -bl:..\..\custom.binlog
- -bl:publish-{}.binlog
- -binaryLogger
-consoleLoggerParameters:{parameters}

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

- PerformanceSummary. Показать время, затраченное на задачи, целевые объекты и проекты.
- Summary. Отображение сводки об ошибке и предупреждении в конце.
- 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 в собственный файл. Исходное расположение этих файлов — текущий каталог. By default, the files are named MSBuild{NodeId}.log. Параметр можно использовать -fileLoggerParameters для указания расположения файлов и других параметров для fileLogger.

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

-dl:{central logger},{forwarding 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}]
Зайдите в журнал выходных данных сборки в один файл в текущем каталоге. If you don't specify number, the output file is named msbuild.log. При указании numberвыходной файл называется msbuild<n>.log, где <n>number. Number может быть цифрой от 1 до 9.

Параметр можно использовать -fileLoggerParameters для указания расположения файла и других параметров для fileLogger.
-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] \| AssemblyFile

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

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

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

-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-noConsoleLogger

-noconlog
Отключите средство ведения журнала консоли по умолчанию и не регистрировать события в консоли.
-terminalLogger[:auto,on,off]

-tl[:auto,on,off]
Enable or disable the terminal logger. Средство ведения журнала терминалов предоставляет расширенные выходные данные сборки в консоли в режиме реального времени, упорядоченные логически по проекту и предназначенные для выделения практических сведений. Укажите auto (или используйте параметр без аргументов) для использования средства ведения журнала терминала только в том случае, если стандартные выходные данные не перенаправляются. Не анализируйте выходные данные или иначе полагаться на нее, оставаясь неизменными в будущих версиях. Этот параметр доступен в MSBuild 17.8 и более поздних версиях.

Example

The following example builds the rebuild target of the MyProject.proj project.

MSBuild.exe MyProject.proj -t:rebuild

See also