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


Настройте сборку

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

Предпосылки

  • Знакомство со структурой файлов проекта MSBuild (.csprojили .vbprojаналогичной)
  • Основные сведения о свойствах и целевых объектах MSBuild

Обзор

Проекты MSBuild, использующие стандартный процесс сборки (импорт Microsoft.Common.props и Microsoft.Common.targets), содержат несколько точек расширения, которые можно использовать для настройки процесса сборки.

Многие настраиваемые операции сборки управляются свойствами. Важно знать, как и где задать значение свойства, чтобы иметь нужный эффект. Вы можете задать свойства в командной строке (и в файлах ответа), в специальных файлах, таких как Directory.Build.props, в импортированных файлах или в файле проекта. Важно знать, где используется свойство, задать или изменить порядок импортированных файлов, включая неявные импорты из пакетов SDK, таких как пакет SDK для .NET.

Список свойств см. в разделе "Общие свойства MSBuild".

Изучение параметров настройки

Следующие параметры настройки перечислены в порядке повышения сложности и области влияния. Рекомендуется использовать наименее сложный вариант настройки, который служит вашей целью, начиная с верхней части этого списка.

Параметр настройки Description
Добавление аргументов в командную строку MSBuild Задайте глобальные свойства, влияющие на основную сборку и сборку всех зависимых проектов.
Настройка сборки для одного проекта Добавьте свойства в .props или .targets файлы для настройки параметров сборки.
Обработка созданных файлов в процессе сборки Убедитесь, что созданные файлы правильно включены в сборку.
Настройка сборки для одного или нескольких проектов Добавьте свойства в Directory.Build.props или добавьте свойства и целевые объекты в Directory.Build.targets , чтобы настроить сборку для всех проектов в папке. Этот метод полезен для задания параметров, которые задаются или используются комплектом SDK, а также определения области применения настроек, которая распространяется на все проекты в папке или вложенной папке.
Настройка локальной сборки Внесите изменения в сборку только на локальном компьютере, не затрагивая общие исходные файлы.
Настройка сборки решения Настройте поведение сборки на уровне решения до и после отдельных сборок проекта.
Настройка всех сборок .NET Настройте сборку с системным охватом для сборок .NET.
Настройка сборок C++ Настройте сборку C++, область действия проекта, решения, папки или все сборки, управляемые установкой MSBuild в системе.

Добавление аргументов в вызовы MSBuild командной строки для проекта

Глобальные свойства можно задать в командной строке. Глобальные свойства оказывают влияние на все этапы сборки проекта, включая его зависимости. Помните, что создание проекта автоматически активирует возможную сборку для всех зависимостей проекта. Обычное поведение MSBuild заключается в создании любых зависимых проектов, которые устарели. Эти зависимые сборки проекта запускаются с теми же глобальными параметрами свойств из командной строки, что и исходный проект.

Файл Directory.Build.rsp в или выше исходного каталога применяется к сборке проекта через командную строку. Более подробную информацию см. в файлах-ответах MSBuild.

Выбор между добавлением свойств в .props файл или .targets файл

MSBuild зависит от порядка импорта, а последнее определение свойства (или UsingTask целевого объекта) используется.

При использовании явных импортов вы можете импортировать из файла .props или .targets в любой момент. Ниже приведено широко используемое соглашение:

  • .props Файлы импортируются на ранних этапах процесса импорта.

  • .targets файлы импортируются на поздних этапах очередности сборки.

Это соглашение применяется импортом <Project Sdk="SdkName"> (т. е. импорт пакета SDK.props происходит первым, прежде чем все содержимое файла, затем Sdk.targets будет последним после всего содержимого файла).

При выборе размещения свойств используйте следующие общие рекомендации.

  • Для многих свойств это не имеет значения, где они определены, так как они не перезаписываются и считываются только во время выполнения.

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

  • Избегайте настройки зависимых свойств в .props файлах, считывая значение возможно настраиваемого свойства, так как настройка не происходит, пока MSBuild не считывает проект пользователя.

  • Задайте зависимые свойства в .targets файлах, так как они собирают настройки из отдельных проектов.

  • Если вам нужно переопределить свойства, сделайте это в .targets файле, после того как все настройки проекта пользователя имели возможность вступить в силу. Будьте осторожны при использовании производных свойств, поскольку их также, возможно, придется переопределять.

  • Включение элементов в файлы .props в зависимости от свойства. Все свойства учитываются перед любым элементом, поэтому настройки свойств пользовательского проекта распознаются, а импортированные элементы в .props файлах предоставляют пользователю возможность Remove или Update любой элемент, внесенный импортом.

  • Определение целевых объектов в .targets файлах. Однако если файл импортируется пакетом SDK, помните, .targets что этот сценарий затрудняет переопределение целевого объекта, так как проект пользователя по умолчанию не имеет места для переопределения.

  • Если возможно, предпочитайте настраивать свойства во время оценки, а не изменять их внутри цели. Это руководство упрощает загрузку проекта и понимание его функций.