Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье представлен обзор параметров настройки сборки и рекомендаций по использованию каждого подхода. Параметры представлены в порядке сложности, от аргументов командной строки до системных настроек.
Предпосылки
- Знакомство со структурой файлов проекта 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что этот сценарий затрудняет переопределение целевого объекта, так как проект пользователя по умолчанию не имеет места для переопределения.Если возможно, предпочитайте настраивать свойства во время оценки, а не изменять их внутри цели. Это руководство упрощает загрузку проекта и понимание его функций.