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

ArgumentDescription
ProjectFileBuilds 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.-nologoDon’t display the startup banner or the copyright message.-preprocess[: filepath ]-pp[: filepath ]Create a single, aggregated project file by inlining all the files that would be imported during a build, with their boundaries marked. You can use this switch to more easily determine which files are being imported, from where the files are being imported, and which files contribute to the build. When you use this switch, the project isn’t built.

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.-outputResultsCache[:cacheFile]-orc[:cacheFile]Output cache file where MSBuild will write the contents of its build result caches at the end of the build. Setting this also turns on isolated builds (-isolate).-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.-property: name = value-p: name = valueSet or override the specified project-level properties, where name is the property name and value is the property value. Specify each property separately, or use a semicolon or comma to separate multiple properties, as the following example shows:

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

SwitchShort formDescription
-binaryLogger[:[LogFile=] output.binlog
[;ProjectImports=[None,Embed,ZipFile]]]
-blSerializes 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-clp: parametersPass the parameters that you specify to the console logger, which displays build information in the console window. You can specify the following 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.-distributedLogger:

forwarding logger-dl: central logger * forwarding loggerLog events from MSBuild, attaching a different logger instance to each node. To specify multiple loggers, specify each logger separately.

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-fileLogger

You can use the -fileLoggerParameters switch to specify the location of the file and other parameters for the fileLogger.-fileLoggerParameters[number]:

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:

logger-l: loggerSpecifies the logger to use to log events from MSBuild. To specify multiple loggers, specify each logger separately.

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 для создания файла проекта или решения можно включить несколько переключателей для указания различных аспектов процесса.

Синтаксис

Аргументы

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

Переключатели

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

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

Узел соответствует выполняющемуся проекту. Если добавить переключатель -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 проект проверяется по указанной вами схеме.

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

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

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

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

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

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.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *