msbuild параметры командной строки
MSBuild в командной строке — C++
Как правило, для установки свойств проекта и вызова системы MSBuild рекомендуется использовать Visual Studio. Однако вы можете использовать инструмент MSBuild напрямую из командной строки. Процесс сборки управляется сведениями, указанными в файле проекта (с расширением VCXPROJ). Этот файл можно создавать и редактировать. Файл проекта устанавливает параметры сборки в зависимости от этапов, условий и событий сборки. Кроме того, вы можете указывать аргументы командной строки (параметры) — сколько потребуется.
С помощью параметров командной строки /target (или /t) и /property (или /p) можно переопределять конкретные свойства и целевые объекты, заданные в файле проекта.
Важная функция файла проекта является указание целевой, который является конкретной операцией, применяемой для проекта и входов и выходов, которые требуются для выполнения этой операции. Файл проекта можно указать один или несколько целевых объектов, включая целевой объект по умолчанию.
A параметр задачи свойство класса задачи, обычно представляет параметр командной строки исполняемой команды. Например FavorSizeOrSpeed параметр CL Задача соответствует /Os и /Ot Параметры компилятора.
Дополнительные параметры задачи поддерживают инфраструктуру MSBuild. Например Sources параметр задачи указывает набор задач, которые могут быть использованы другими задачами. Дополнительные сведения о задачах MSBuild см. в разделе Справочные сведения о задачах.
Для большинства задач требуются входные и выходные данные, такие как имена файлов, пути и строки, числовые или логические параметры. Например часто к входным данным — имя исходного CPP-файла для компиляции. Важным входным параметром является строка, указывающая конфигурацию сборки и платформу, например, «Debug|Win32». Входные и выходные данные задаются один или несколько определяемых пользователем XML Item элементов, содержащихся в ItemGroup элемент.
Другие элементы XML в файле проекта можно тестировать макросы и затем условно значение любого макроса или контролировать выполнение построения. Имена макросов и строковые литералы можно сцепить для создания конструкций, таких как путь и имя файла. В командной строке /property Задает или переопределяет свойства проекта. Элементы нельзя ссылаться в командной строке.
Система MSBuild может условно выполнить целевой объект до или после другого целевого объекта. Кроме того эта система может построить целевой объект на основании ли целевой объект использует файлы новее, чем выдаваемые им файлы.
Дополнительные сведения о MSBuild см. в следующих статьях.
MSBuild — обзор основных понятий MSBuild.
Справочник по MSBuild — справочные сведения о системе MSBuild.
Справочник по схеме файла проекта — список XML-элементов схемы MSBuild, а также их атрибутов и родительских и дочерних элементов. Обратите внимание, особенно ItemGroup, PropertyGroup, целевой, и задачи элементы.
Справочник по командной строке — описание аргументов и параметров командной строки, которые можно использовать при работе с msbuild.exe.
Справочник по задачам — описание задач MSBuild. Рекомендуется особенно внимательно изучить следующие задачи, относящиеся к Visual C++: BscMake, CL, CPPClean, LIB, Link, MIDL, MT, RC, SetEnv, VCMessage
свойства MSBuild
Свойства представляют собой пары «имя-значение», с помощью которых выполняется настройка сборок. Свойства используются для передачи значений задачам, проверки условий и хранения значений, на которые можно давать ссылки в файле проекта.
Определение свойств и указание ссылок на них в файле проекта
Значения свойств можно изменить путем переопределения свойств. Для свойства BuildDir можно задать новое значение, используя следующий XML-код:
Свойства оцениваются в том порядке, в каком они указаны в файле проекта. Новое значение для BuildDir должно быть объявлено после присвоения прежнего значения.
Зарезервированные свойства
Свойства среды
Каждый проект MSBuild содержит изолированный блок среды. Он видит только чтения из своего блока и записи в него. MSBuild считывает переменные среды только при инициализации коллекции свойств. Это происходит до оценки файла проекта или его сборки. Кроме того, свойства среды являются статическими. Это значит каждый порожденное средство запускается с теми же именами и значениями.
Чтобы получить текущее значение переменные среды из порожденного средства, можно использовать функции свойства System.Environment.GetEnvironmentVariable. Однако рекомендуется использовать параметр задачи EnvironmentVariables. Свойства среды, заданные в этом массиве строк, могут быть переданы в порожденное средство без изменения переменных среды.
Не все переменные среды считываются в качестве исходных свойств. Все переменные среды, имена которых не являются допустимыми именами свойств MSBuild, например «386», игнорируются.
Свойство реестра
Значения разделов системного реестра можно считывать, используя следующий синтаксис. Здесь Hive — это куст реестра (например, HKEY_LOCAL_MACHINE), MyKey — имя раздела, MySubKey — имя подраздела, Value — значение подраздела.
Это значение раздела реестра можно использовать для инициализации свойства сборки. Например, чтобы создать свойство сборки, которое представляет домашнюю страницу веб-браузера Visual Studio, используйте следующий код:
Глобальные свойства
MSBuild позволяет задавать свойства в командной строке с помощью параметра -property (или -p). Эти значения глобальных свойств переопределяют значения свойств, заданные в файле проекта. Это относится также к свойствам среды за исключением зарезервированных свойств, которые нельзя изменить.
Кроме того, глобальные свойства можно задавать или изменять для дочерних проектов в сборках из нескольких проектов, используя атрибут Properties задачи MSBuild. Глобальные свойства также передаются в дочерние проекты, если только с помощью атрибута RemoveProperties задачи MSBuild не указан список свойств, которые не должны передаваться. Дополнительные сведения см. в разделе Задача MSBuild.
Если свойство задается с помощью атрибута TreatAsLocalProperty в теге проекта, это значение глобального свойства не переопределяет значение свойства, заданное в файле проекта. Дополнительные сведения см. в разделе Элемент Project (MSBuild) и Практическое руководство. Построение одинаковых исходных файлов с различными параметрами.
Функции свойств
Для работы с любым значением свойства можно использовать методы строки (экземпляра), а также можно вызывать статические методы многих системных классов. Например, чтобы установить для свойства сборки в качестве значения сегодняшнюю дату, сделайте следующее.
Дополнительные сведения и список функций свойств см. в разделе Функции свойства.
Создание свойств во время выполнения
Свойство может создано задачей CreateProperty. Этот способ не рекомендуется использовать.
Сохранение XML-кода в свойствах
MSBuild command-line reference
When you use MSBuild.exe to build a project or solution file, you can include several switches to specify various aspects of the process.
Syntax
Arguments
Argument | Description |
---|---|
ProjectFile | Builds the targets in the project file that you specify. 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. You can also specify a Visual Studio solution file for this argument. |
Switches
The following example instructs MSBuild to build using three MSBuild processes, which allows three projects to build at the same time:
— True. Nodes remain after the build finishes so that subsequent builds can use them (default).
— False. Nodes don’t remain after the build completes.
A node corresponds to a project that’s executing. If you include the -maxcpucount switch, multiple nodes can execute concurrently.
For information about how to use the Import element to insert a project file into another project file, see Import element (MSBuild) and How to: Use the same target in multiple project files.
If you specify any targets by using this switch, they are run instead of any targets in the DefaultTargets attribute in the project file. For more information, see Target build order and How to: Specify which target to build first.
By using this switch, you can build a project and specify a version that differs from the version that’s specified in the Project element (MSBuild). For more information, see Overriding ToolsVersion settings.
For MSBuild 4.5, you can specify the following values for version : 2.0, 3.5, and 4.0. If you specify 4.0, the VisualStudioVersion build property specifies which sub-toolset to use. For more information, see the Sub-toolsets section of Toolset (ToolsVersion).
Switches for loggers
Switch | Short form | Description |
---|---|---|
-binaryLogger[:[LogFile=] output.binlog [;ProjectImports=[None,Embed,ZipFile]]] | -bl | 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. |
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 (default).
— ProjectImports=ZipFile. Save project files to .projectimports.zip where 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://github.com/Microsoft/msbuild/wiki/Binary-Log
parameters
Use a semicolon to separate multiple parameters, as the following example shows:
If you name a log file by using the -fileLoggerParameters switch, the distributed logger will use that name as a template and append the node ID to that name when creating a log file for each node.
forwarding logger
You use the logger syntax to specify a logger. For the logger syntax, see the -logger switch below.
The following examples show how to use this switch:
-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
You can use the -fileLoggerParameters switch to specify the location of the file and other parameters for the fileLogger.
You can use all parameters that are listed for -consoleloggerparameters. You can also use one or more of the following parameters:
The following example generates separate log files for warnings and errors:
The following examples show other possibilities:
-flp2:errorsonly;logfile=msbuild.err
logger
Use the following syntax for logger : [«LoggerClass«,]«LoggerAssembly«[;«LoggerParameters«]
Use the following syntax for LoggerClass : [«PartialOrFullNamespace«.]«LoggerClassName
You don’t have to specify the logger class if the assembly contains exactly one logger.
Use the following syntax for LoggerAssembly :
Logger parameters are optional and are passed to the logger exactly as you enter them.
The following examples use the -logger switch.
Зарезервированные и стандартные свойства MSBuild
Для определения зарезервированных и известных свойств в MSBuild используются значения, приведенные в следующей таблице. Зарезервированные свойства переопределить нельзя, тогда как известные свойства можно переопределить с помощью свойств с идентичными именами (свойства среды, глобальные свойства или свойства, определенные в файле проекта).
Зарезервированные и стандартные свойства
Свойство. | Зарезервированное или стандартное | Описание | Пример | |||||||
---|---|---|---|---|---|---|---|---|---|---|
MSBuildBinPath | Зарезервированное | Абсолютный путь к папке, где находятся используемые в данный момент двоичные файлы MSBuild (например, C:\Windows\Microsoft.Net\Framework\ ). Это свойство удобно, если вам нужно ссылаться на файлы в каталоге MSBuild. Не включайте в это свойство завершающую обратную косую черту. Это расположение хорошо подходит для хранения пользовательских файлов целей. Например, файлы целей можно установить в папку \Program Files\MSBuild\MyFiles\Northwind.targets, а затем импортировать в файлы проекта с помощью следующего XML-кода: | Build | |||||||
MSBuildProjectDirectory | Зарезервированное | Абсолютный путь к каталогу, где располагается файл проекта, например C:\MyCompany\MyProduct. Чтобы выполнить сборку в любой точке дерева, введите следующее: Не включайте в путь завершающую обратную косую черту. Это свойство нельзя переопределить. | C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Current\Bin | |||||||
MSBuildToolsVersion | Зарезервированное | Версия набора инструментов MSBuild, используемая для сборки проекта. Примечание. Набор инструментов MSBuild состоит из задач, целей и средств, используемых для сборки приложения. Средства включают компиляторы csc.exe и vbc.exe. Дополнительные сведения см. в статьях Набор инструментов MSBuild (ToolsVersion) и Стандартные и настраиваемые конфигурации наборов инструментов. | Current | |||||||
MSBuildVersion | Зарезервированное | Версия MSBuild, используемая для сборки проекта.Имена, которые конфликтуют с элементами MSBuildПомимо указанных выше, имена, соответствующие элементам языка MSBuild, не могут использоваться для определяемых пользователем свойств, элементов и метаданных элементов: Справочник по командной строке MSBuildПри использовании MSBuild.exe для создания файла проекта или решения можно включить несколько переключателей для указания различных аспектов процесса. СинтаксисАргументы
ПереключателиВ следующем примере MSBuild использует для создания три процесса MSBuild, что позволяет создать три проекта одновременно: — True. Узлы сохраняются после создания, чтобы последующие сборки могли использовать их (по умолчанию). Узел соответствует выполняющемуся проекту. Если добавить переключатель -maxcpucount, несколько узлов могут выполняться одновременно. | ||||||||
-nologo | Не отображать загрузочный баннер или сообщение об авторских правах. | |||||||||
-preprocess[: filepath ] | -pp[: filepath ] | Создать один сводный файл проекта, встроив все файлы, которые будут импортированы во время создания, с отмеченными границами. Этот переключатель можно использовать для более простого определения импортируемых файлов, расположения, из которого выполняется импорт, и файлов, участвующих в сборке. При использовании этого переключателя проект не создается. Сведения об использовании элемента Import для вставки файла проекта в другой файл проекта см. в разделах Элемент Import (MSBuild) и Практическое руководство. Использование одного и того же целевого объекта в нескольких файлах проектов. | ||||||||
-outputResultsCache[:cacheFile] | -orc[:cacheFile] | Файл кэша вывода, куда MSBuild запишет содержимое кэша результатов сборки в конце сборки. При установке этого параметра также включаются изолированные сборки (-isolate). | ||||||||
-profileEvaluation: | — | Профилирует оценку MSBuild и записывает результат в указанный файл. Если указанный файл имеет расширение MD, результат создается в формате Markdown. В противном случае создается файл с разделением табуляцией. | ||||||||
-property: name = value | -p: name = value | Задать или переопределить указанные свойства уровня проекта, где name является именем свойства, а value — значением свойства. Укажите каждое свойство отдельно или используйте точку с запятой или запятую для разделения нескольких свойств, как показано в следующем примере: Если с помощью этого переключателя указать какие-либо целевые объекты, они запустятся вместо целевых объектов в атрибуте DefaultTargets в файле проекта. Дополнительные сведения см. в статьях Порядок сборки целевого объекта и Практическое руководство. Выбор целевого объекта для первой сборки. С помощью этого параметра можно собрать проект и указать версию, которая отличается от версии, указанной в элементе Project (MSBuild). Дополнительные сведения см. в статье Переопределение параметров ToolsVersion. Для MSBuild 4.5 можно указать следующие значения version : 2.0, 3.5 и 4.0. При выборе версии 4.0 свойство сборки VisualStudioVersion указывает, какой вспомогательный набор инструментов следует использовать. Дополнительные сведения см. в разделе о вспомогательных наборах инструментов статьи Toolset (ToolsVersion) (Набор инструментов ToolsVersion). При указании schema проект проверяется по указанной вами схеме. Параметры для средств ведения журнала
Средство ведения двоичного журнала по умолчанию собирает исходный текст файлов проекта, включая все импортированные проекты и целевые файлы, найденные во время сборки. Это поведение контролируется обязательным параметром ProjectImports : — ProjectImports=None. Не объединять импортируемые пространства имен проекта. Значение по умолчанию для ProjectImports — «Embed». parameters | -clp: parameters | Передать указанные параметры в средство ведения журнала консоли, в окне консоли которого отображаются сведения о сборке. Можно задать следующие параметры: Используйте точку с запятой для разделения нескольких параметров, как показано в следующем примере. Если вы укажете имя для файла журнала с помощью переключателя -fileLoggerParameters, распределенное средство ведения журнала будет использовать это имя как шаблон, добавляя к нему значение идентификатора узла при создании файлов журнала для каждого узла. | ||||||
-distributedLogger: forwarding logger | -dl: central logger * forwarding logger | Вести журнал событий из MSBuild, присоединяя разные экземпляры журнала к каждому узлу. Чтобы указать несколько средств ведения журнала, укажите отдельно каждое из них. Синтаксис средства ведения журнала позволяет указать средство ведения журнала. Синтаксис средства ведения журнала представлен ниже в описании переключателя -logger. В следующих примерах демонстрируется использование этого переключателя. -dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll | ||||||||
-fileLogger Чтобы указать расположение файлов и другие параметры для средства ведения журнала fileLogger, используйте переключатель -fileLoggerParameters. | ||||||||||
-fileLoggerParameters[number]: Можно использовать все параметры, которые указаны для -consoleloggerparameters. Также можно использовать один или несколько следующих параметров: В следующем примере создаются отдельные файлы журнала для предупреждений и ошибок. Ниже приведены примеры других возможностей. -flp2:errorsonly;logfile=msbuild.err | ||||||||||
-logger: logger | -l: logger | Задает средство ведения журнала для записи событий MSBuild. Чтобы указать несколько средств ведения журнала, укажите отдельно каждое из них. Если сборка содержит ровно одно средство ведения журнала, его класс указывать не нужно. Параметры средства ведения журнала являются необязательными и передаются в него точно по мере их ввода. В следующих примерах используется переключатель -logger.
|