Msbuild что это за программа

MSBuild что это за программа

Знаете программу MSBuild? Нет? Так не спешите, принявшись за очистку компьютера, вовсе удалять MSBuild, поскольку можете нажить тем самым ненужных проблем. В сети информация на счёт того, что это такое MSBuild довольно разрозненная, в виде либо кратких хаотичных разговоров на форумах, либо тяжеловесных для восприятия статей, написанных программистами для программистов. Поэтому я и решил попробовать написать, что это за приложение MSBuild, вкратце описав механику процесса, объяснить, для каких целей оно используется.

Что такое MSBuild

Итак, немного истории, плавно перетекающей в наши дни. Для реализации сборки небольших проектов существует компилятор командной строки и пакетного файла, который содержит вызов. В том случае, если проект возрастает, необходимой становится программа MSBuild, которая будет отслеживать версии файлов и компилировать модули. Изначально это была программа make, появившаяся еще в Unix и постепенно перешедшая на другие платформы. Его работа устроена таким образом: он считывает файл, в котором заключено описание зависимостей между исходными и целевыми файлами, затем сравнивает их версии и автоматически решает, требуется ли пересоздать целевые файлы.

Msbuild что это за программа. Смотреть фото Msbuild что это за программа. Смотреть картинку Msbuild что это за программа. Картинка про Msbuild что это за программа. Фото Msbuild что это за программа

Попробую подробно объяснить, что это за программа MSBuild. Идея была крайне простой, а вот формат этого самого make-файла очевиден не был. В течение долгого времени появилось множество разновидностей данной утилиты, каждая из которых обладала своим синтаксисом. Другой проблемой являлся расчёт на пакетную работу в режиме командной строки. Время шло, технологии, и прогресс не стояли на месте: появлялись различные визуальные интегрированные среды разработки (например, IDE), —стало очевидным несоответствие make современным требованиям. Тогда в 2002 появился VS 2002, где и от создания make-файлов отступились совсем, из-за чего стало невозможна компиляция проектов в режиме командной строки.

В дальнейшем Java-программистами, работающими в конкуренции с windows-программистами, была создана любопытная программа —Ant. От make его отличала отсутствие завязки на команды операционной системы: вместо команд ОС процесс происходил посредством внутренних команд Ant, которые проецировались на Java-классы.

Благодаря своей простоте и малому количеству ошибок эта программа Ant вскоре стала самым популярным подобным решением. А для разработки высокопроизводительных приложений был создан Msxml 4.0.

Вас интересует, каким образом всё это вообще относится к Microsoft? Самым что ни на есть непосредственным: именно прототипом Ant является программа MSBuild.

От теории к практике: немного примеров, иллюстрирующих необходимость MSBuild

Ясно, что эта программа MSBuild не является необходимым элементом для функционирования операционной системы, однако её удаление повлияет на работу огромного числа программ, завязанных на взаимодействие с ним. Среди них, например, Microsoft Office, используемый практически каждым из нас.

Msbuild что это за программа. Смотреть фото Msbuild что это за программа. Смотреть картинку Msbuild что это за программа. Картинка про Msbuild что это за программа. Фото Msbuild что это за программа

Если удалить MSBuild, многие интернет браузеры также элементарно перестанут запускаться. А если удалить ATK Package не будет работать 3d графика.

Надеюсь, что в данной статье мне удалось пролить немного света на ситуацию с описываемой программой MSBuild, отговорив вас, если вы имели таковое желание, удалять ее.

Источник

MSBuild

Microsoft Build Engine представляет собой платформу для сборки приложений. Компонент MSBuild обеспечивает для файла проекта схему XML, определяющую способы, используемые платформой сборки для обработки и сборки приложений. Visual Studio использует MSBuild, но MSBuild не зависит от Visual Studio. Вызывая msbuild.exe для файла проекта или решения, можно контролировать и создавать в продукты в средах без установленного экземпляра Visual Studio.

Visual Studio использует MSBuild для загрузки и сборки управляемых проектов. Файлы проектов в Visual Studio (с расширением CSPROJ, VBPROJ, VCXPROJ) содержат код XML MSBuild, который выполняется при создании проекта с помощью интегрированной среды разработки. Проекты Visual Studio импортируют все необходимые параметры и процессы сборки для выполнения стандартной работы по разработке, но их можно расширять и изменять в Visual Studio или в редакторе XML.

Начиная с Visual Studio 2022, при выполнении сборки в Visual Studio используется 64-разрядная версия MSBuild.

Сведения об MSBuild для C++ см. в разделе MSBuild (C++).

В следующих примерах показаны случаи, когда сборки можно запускать с помощью вызова MSBuild из командной строки, а не интегрированной среды разработки Visual Studio.

Вам требуется 64-разрядная версия MSBuild, но вы используете Visual Studio 2019 или более ранней версии. Эта версия MSBuild обычно не нужна, но она позволяет MSBuild обращаться к большему объему памяти.

Сборку требуется выполнять в нескольких процессах. Однако можно использовать интегрированную среду разработки, чтобы добиться того же результата для проектов на C++ и C#.

Требуется изменить систему сборки. Например, может потребоваться выполнить следующие действия:

предварительная обработка файлов перед их компиляцией;

копирование выходных данных сборки в другое место;

создание сжатых файлов из выходных данных сборки;

пост-обработка. Например, может потребоваться присвоить сборке другой номер версии.

С помощью Azure Pipelines можно автоматически компилировать, тестировать и развертывать приложение. Система сборки может автоматически запускать сборку, когда разработчики возвращают код (например, как часть стратегии непрерывной интеграции) или по расписанию (например, выполнять ежедневную ночную тестовую сборку). Azure Pipelines компилирует код с использованием MSBuild. Дополнительные сведения см. в описании Azure Pipelines.

В статье представлен обзор MSBuild. Вводную информацию см. в статье Пошаговое руководство. Использование MSBuild.

Использование MSBuild в командной строке

Дополнительные сведения о параметрах командной строки MSBuild см. в статье Справочник по командной строке MSBuild.

Перед загрузкой проекта определите, можно ли доверять коду.

Файл проекта

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

В следующих разделах описаны некоторые из базовых элементов формата файла проекта MSBuild. См. дополнительные сведения о создании базового файла проекта MSBuild с нуля.

Свойства

Дополнительные сведения о свойствах см. в разделе Свойства MSBuild.

Элементы

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

При объявлении элементов можно использовать подстановочные знаки; элементы могут содержать дополнительные метаданные для расширенных сценариев построения. Дополнительные сведения об элементах см. в разделе Элементы.

Задачи

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

Алгоритм выполнения задачи записан в управляемом коде и сопоставлен с MSBuild с помощью элемента UsingTask. Для создания собственной задачи можно разработать управляемый тип, реализующий интерфейс ITask. Дополнительные сведения о способах создания задач см. в руководстве по написанию задач.

MSBuild включает стандартные задачи, которые можно изменять в соответствии с требованиями. Примеры: Copy — копирование файлов, MakeDir — создание каталогов, Csc — компиляция файлов исходного кода Visual C#. Список доступных задач и сведения об их использовании см. в справочнике по задачам.

Дополнительные сведения о задачах см. в разделе Задачи.

Целевые объекты

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

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

Журналы сборки

Ошибки, предупреждения и сообщения журнала сборки можно выводить на консоль или на другое устройство вывода. Дополнительные сведения см. в руководствах по получению журналов сборки и ведению журналов в MSBuild.

Использование MSBuild в Visual Studio

Visual Studio использует формат файла проекта MSBuild для хранения данных сборки об управляемых объектах. Параметры проекта, добавленные или измененные с помощью интерфейса Visual Studio, отражаются в файле .*proj, который создается для каждого проекта. Для построения управляемых проектов в Visual Studio используется размещенный экземпляр MSBuild. Это означает, что выполнить построение управляемого проекта можно в Visual Studio или в командной строке (даже при отсутствии Visual Studio), и результаты будут одинаковыми.

Настройка для различных версий

Ниже приведены несколько преимуществ настройки для различных версий:

Можно ориентироваться на профиль платформы, который представляет собой предопределенное подмножество целевой платформы.

Дополнительные сведения см. в разделе Настройка для различных версий.

См. также

ЗаголовокОписание
Пошаговое руководство: Создание файла проекта MSBuild с нуляСодержит описание способов пошагового создания основного файла проекта путем использования только текстового редактора.
Пошаговое руководство: Использование MSBuildСодержит вводную информацию о стандартных блоках MSBuild и описание способов записи, управления и отладки проектов MSBuild без выхода из интегрированной среды разработки Visual Studio.
Основные понятия MSBuildСодержит информацию о четырех стандартных блоках MSBuild: свойствах, элементах, целевых объектах и задачах.
ЭлементыСодержит описание общих понятий, относящихся к формату файлов MSBuild, и способов взаимодействия фрагментов.
Свойства MSBuildСодержит вводную информацию о свойствах и коллекциях свойств. Свойства представляют собой пары ключ-значение, с помощью которых выполняется настройка сборок.
Целевые объектыСодержит объяснение группировки задач в определенном порядке и вызова разделов процесса построения из командной строки.
ЗадачиОписывает процесс создания блока исполняемого кода, с помощью которого MSBuild выполняет атомарные операции построения.
УсловияРассматривает использование атрибута Condition в элементе MSBuild.
Дополнительные возможностиСодержит информацию о пакетной обработке, выполнении преобразований, использовании нескольких целевых платформ и других дополнительных возможностях.
Ведение журнала в MSBuildОписание возможностей записи в журнал событий, сообщений и ошибок сборки.
Как MSBuild выполняет сборку проектовОписывает внутренний процесс сборки, используемый в MSBuild.
Дополнительные ресурсыСодержит список ресурсов сообщества и службы поддержки с дополнительной информацией о MSBuild.

Справочник

Справочные сведения о MSBuild
Содержит ссылки на разделы, содержащие справочную информацию.

Глоссарий
Содержит определения общих терминов MSBuild.

Источник

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

Параметры

Список разделенных точкой с запятой пар имя-значение для применения в качестве глобальных свойств к дочернему проекту. Указание этого параметра функционально эквивалентно заданию значений свойств с помощью параметра -property при выполнении сборки с использованием MSBuild.exe. Пример:

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

Параметр TargetOutputs также содержит следующие метаданные:

Примечания

Помимо перечисленных выше параметров, эта задача наследует параметры от класса TaskExtension, который, в свою очередь, наследует от класса Task. Список этих дополнительных параметров и их описания см. в статье Базовый класс TaskExtension.

В отличие от использования задачи Exec для запуска MSBuild.exe, эта задача использует тот же процесс MSBuild для создания дочерних проектов. Список уже собранных целевых объектов, которые могут быть пропущены, доступен как родительским, так и дочерним сборкам. Эта задача выполняется быстрее, так как при этом не создаются новые процессы MSBuild.

Эта задача может обрабатывать не только файлы проекта, но также файлы решения.

Начиная с версии MSBuild 3.5, проекты решения извлекают конечные выходные данные из всех подпроектов, которые он создает.

Передача свойств в проекты

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

MSBuild 3.5 предоставляет два новых зарезервированных элемента метаданных, Properties и AdditionalProperties, позволяющие легко передавать разные свойства в разные проекты, сборка которых выполнена с помощью задачи MSBuild.

Эти новые элементы метаданных применимы только к элементам, переданным с помощью атрибута Projects задачи MSBuild.

Преимущества сборки в системах с несколькими процессорами

Одно из основных преимуществ использования новых метаданных проявляется при выполнении сборок проектов в параллельном режиме в системах с несколькими процессорами. Метаданные позволяют объединить все проекты в один вызов задачи MSBuild, не требуя выполнения пакетной обработки или задачи MSBuild с разными условиями. При вызове единой задачи MSBuild сборка всех проектов, перечисленных в атрибуте Projects, будет выполняться параллельно. (Конечно, в том случае, если атрибут BuildInParallel=true определен для задачи MSBuild.) Дополнительные сведения см. в статье Параллельное построение нескольких проектов с помощью MSBuild.

Метаданные Properties

Если указано, метаданные Properties переопределяют параметр Properties задачи, а метаданные AdditionalProperties добавляются к определениям параметров.

Чаще всего сборка нескольких файлов решения осуществляется с помощью задачи MSBuild, выполняемой с использованием разных конфигураций сборки. Например, вам нужно выполнить сборку решения a1 с помощью конфигурации отладки, а решения a2 — с помощью конфигурации выпуска. В версии MSBuild 2.0 такой файл проекта выглядел следующим образом:

В следующем примере знаком «. » обозначены дополнительные файлы решения.

a.proj

Эту процедуру можно упростить, используя метаданные Properties и выполняя одну задачу MSBuild, как показано ниже:

a.proj

Метаданные AdditionalProperties

Рассмотрим сценарий, в котором выполняется сборка двух файлов решения с помощью задачи MSBuild, того и другого с использованием конфигурации выпуска, но одного из них с архитектурой x86, а другого — с архитектурой ia64. В версии MSBuild 2.0 вам потребовалось бы создать несколько экземпляров задачи MSBuild. Один — для сборки проекта с помощью конфигурации выпуска с архитектурой x86, другой — с помощью конфигурации выпуска с архитектурой ia64. Файл проекта выглядел бы следующим образом:

a.proj

Эту процедуру можно упростить, используя метаданные AdditionalProperties и выполняя одну задачу MSBuild, как показано ниже:

a.proj

Пример

Источник

Что такое msbuild.exe? Это безопасно или вирус? Как удалить или исправить это

Что такое msbuild.exe?

msbuild.exe это исполняемый файл, который является частью Windows 8 Consumer Preview ISO-образы разработанный Microsoft, Версия программного обеспечения для Windows: 1.0.0.0 обычно 84744 в байтах, но у вас может отличаться версия.

Msbuild что это за программа. Смотреть фото Msbuild что это за программа. Смотреть картинку Msbuild что это за программа. Картинка про Msbuild что это за программа. Фото Msbuild что это за программа

Msbuild.exe безопасный или это вирус или вредоносная программа?

Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, для msbuild.exe его путь будет примерно таким: C: \ Program Files \ Microsoft \ Windows 8 Consumer Preview ISO images \ msbuild.exe

Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.

Самые важные факты о msbuild.exe:

Если у вас возникли какие-либо трудности с этим исполняемым файлом, вы должны определить, заслуживает ли он доверия, перед удалением msbuild.exe. Для этого найдите этот процесс в диспетчере задач.

Найти его местоположение и сравнить размер и т. Д. С приведенными выше фактами

Если вы подозреваете, что можете быть заражены вирусом, вы должны немедленно попытаться это исправить. Чтобы удалить вирус msbuild.exe, необходимо скачайте и установите приложение полной безопасности, как это, Обратите внимание, что не все инструменты могут обнаружить все типы вредоносных программ, поэтому вам может потребоваться попробовать несколько вариантов, прежде чем вы добьетесь успеха.

Могу ли я удалить или удалить msbuild.exe?

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

Однако, если это не вирус, и вам нужно удалить msbuild.exe, вы можете удалить образы Windows 8 Consumer Preview ISO с вашего компьютера с помощью программы удаления. Если вы не можете найти его деинсталлятор, вам может потребоваться удалить ISO-образы Windows 8 Consumer Preview, чтобы полностью удалить msbuild.exe. Вы можете использовать функцию «Установка и удаление программ» на панели управления Windows.

Распространенные сообщения об ошибках в msbuild.exe

Наиболее распространенные ошибки msbuild.exe, которые могут возникнуть:

• «Ошибка приложения msbuild.exe».
• «Ошибка msbuild.exe».
• «msbuild.exe столкнулся с проблемой и должен быть закрыт. Приносим извинения за неудобства.»
• «msbuild.exe не является допустимым приложением Win32».
• «msbuild.exe не запущен».
• «msbuild.exe не найден».
• «Не удается найти msbuild.exe».
• «Ошибка запуска программы: msbuild.exe».
• «Неверный путь к приложению: msbuild.exe».

Как исправить msbuild.exe

Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.

Чтобы помочь вам проанализировать процесс msbuild.exe на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.

Обновлен декабрь 2021:

Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:

Загрузите или переустановите msbuild.exe

Вход в музей Мадам Тюссо не рекомендуется загружать файлы замены exe с любых сайтов загрузки, так как они могут содержать вирусы и т. д. Если вам нужно скачать или переустановить msbuild.exe, мы рекомендуем переустановить основное приложение, связанное с ним Windows 8 Consumer Preview ISO-образы.

Информация об операционной системе

Ошибки msbuild.exe могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:

Источник

Как MSBuild выполняет сборку проектов

Как работает MSBuild? В этой статье вы узнаете, как MSBuild обрабатывает файлы проекта, вызываемые из Visual Studio, командной строки или скрипта. Знание работы MSBuild поможет вам лучше диагностировать проблемы и улучшить настройку процесса сборки. В этой статье описывается процесс сборки, который в основном применим ко всем типам проектов.

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

Запуск

В следующих разделах содержатся сведения о входных файлах, таких как файлы решений или файлы проектов.

Проекты и решения

Экземпляры MSBuild могут состоять из одного проекта или нескольких проектов в составе решения. Файл решения не является XML-файлом MSBuild, но MSBuild интерпретирует его для получения сведений о проектах, которые должны быть созданы для заданной конфигурации и параметров платформы. Когда MSBuild обрабатывает эти входные данные XML, это называется сборкой решения. Он имеет несколько расширяемых точек, которые позволяют выполнять какие-либо действия во всех сборках решения, но поскольку эта сборка является отдельным запуском из сборок отдельных проектов, никакие настройки свойств или целевых определений из сборки решения не важны для каждой отдельной сборки проекта.

Дополнительные сведения о том, как расширить сборку решения, можно найти в разделе Настройка сборки решения.

Сборки Visual Studio и сборки MSBuild.exe

Имеется ряд существенных различий между сборкой проектов в Visual Studio и при вызове MSBuild напрямую либо с помощью исполняемого файла MSBuild, либо при использовании объектной модели MSBuild для запуска сборки. Visual Studio управляет порядком сборки проекта для сборок Visual Studio. Он вызывает только MSBuild на уровне отдельного проекта. Когда это происходит, задаются несколько логических свойств ( BuildingInsideVisualStudio и BuildProjectReferences ), которые значительно влияют на то, что делает MSBuild. Внутри каждого проекта выполнение происходит так же, как при вызове с помощью MSBuild, но отличается для проектов, на которые имеются ссылки. В MSBuild, когда требуются проекты, на которые имеются ссылки, возникает фактическая сборка (то есть она запускает задачи и средства и создает выходные данные). Когда сборка Visual Studio находит проект, на который указывает ссылка, MSBuild возвращает ожидаемые выходные данные из упоминаемого проекта. Это позволяет Visual Studio управлять сборкой этих проектов. Visual Studio определяет порядок сборки и вызывает MSBuild отдельно (по мере необходимости), все это полностью находится под контролем Visual Studio.

Другое различие возникает при вызове MSBuild файлом решения, MSBuild анализирует файл решения, создает стандартный входной XML-файл, оценивает его и выполняет в качестве проекта. Сборка решения выполняется перед любым проектом. При сборке из Visual Studio ничего этого не происходит; MSBuild не видит файл решения. Как следствие, настройка сборки решения (с использованием before.SolutionName.sln.targets и after.SolutionName.sln.targets) применяется только к MSBuild.exe или к управляемой объектной модели, а не к сборкам Visual Studio.

Пакеты SDK для проектов

Функция пакета SDK для файлов проекта MSBuild относительно нова. До этого изменения файлы проекта явным образом импортировали файлы TARGETS и PROPS, в которых определен процесс сборки для конкретного типа проекта.

Этап оценки

В этом разделе описывается обработка и анализ этих входных файлов для создания объектов в памяти, определяющих, что будет построено.

Целью этапа оценки является создание в памяти структур объектов, основанных на входных XML-файлах и локальной среде. Фаза оценки состоит из шести этапов обработки входных файлов, таких как XML-файлы проекта и (или) импортированные XML-файлы, которые обычно называются файлами PROPS или TARGETS в зависимости от того, задают ли они свойства или определяют целевые объекты сборки. Каждый проход создает часть объектов в памяти, которые позже используются на этапе выполнения для построения проектов, но на этапе оценки фактические действия сборки не выполняются. Внутри каждого прохода элементы обрабатываются в том порядке, в котором они отображаются.

На этапе оценки передаются следующие этапы.

Порядок этих проходов имеет значительные последствия. Это важно помнить при настройке файла проекта. См. раздел Порядок оценки свойств и элементов.

Оценка переменных среды

Оценка импорта и свойств

На этом этапе считывается весь входной XML-файл, включая файлы проекта и всю цепочку импорта. MSBuild создает XML-структуру в памяти, которая представляет XML-код проекта и все импортированные файлы. В настоящее время свойства, которые не находятся в целевых объектах, оцениваются и настраиваются.

Как следствие того, что MSBuild считывает все входные XML-файлы на ранних этапах процесса, любые изменения этих входных данных в процессе сборки не влияют на текущую сборку.

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

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

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

Оценка определений элементов

На этом этапе интерпретируются определения элементов и создается представление этих определений в памяти.

Оценка элементов

Элементы, определенные внутри целевого объекта, обрабатываются не так, как элементы за пределами целевого объекта. На этом этапе обрабатываются элементы за пределами целевого объекта и связанные с ними метаданные. Метаданные, заданные определениями элементов, переопределяются метаданными, заданными для элементов. Так как элементы обрабатываются в том порядке, в котором они отображаются, можно ссылаться на элементы, которые были определены ранее, но не на элементы, которые появятся в дальнейшем. По причине того, что элементы передаются после передачи свойств, элементы могут получить доступ к любому свойству, если оно определено за пределами целевых объектов, независимо от того, появляется ли определение свойства позже.

Оценка элементов UsingTask

На этом этапе элементы UsingTask считываются, а задачи объявляются для последующего использования на этапе выполнения.

Оценка целевых объектов

На этом этапе все структуры целевых объектов создаются в памяти в процессе подготовки к выполнению. Фактическое выполнение не происходит.

Этап выполнения

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

Порядок сборки целевого объекта

В одном проекте целевые объекты выполняются последовательно. Главный вопрос заключается в том, как определить порядок сборки всех элементов, чтобы зависимости использовались для построения целевых объектов в правильном порядке.

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

Ссылки проекта

Существует два пути кода, которые MSBuild может использовать: обычный, описанный здесь, и параметр graph, описанный в следующем разделе.

Параметр Graph

Параллельное выполнение

Стандартные импорты

Файл Microsoft.Common.props задает значения по умолчанию, которые можно переопределить. Он импортируется (явно или неявно) в начале файла проекта. Таким образом, параметры проекта будут отображаться после значений по умолчанию, чтобы переопределять их.

Целевой объект CoreBuild содержит вызовы средств сборки следующим образом:

Эти целевые объекты описаны в следующей таблице. Некоторые целевые объекты применимы только к определенным типам проектов.

целевого объектаОписание
BuildOnlySettingsПараметры только для реальных сборок, а не для тех случаев, когда MSBuild вызывается при загрузке проекта Visual Studio.
PrepareForBuildПодготовка необходимых компонентов для сборки.
PreBuildEventТочка расширения проектов для определения задач, выполняемых перед сборкой.
ResolveProjectReferencesАнализ зависимостей проекта и сборка проектов, на которые имеются ссылки.
ResolveAssemblyReferencesНахождение сборок, на которые указывают ссылки.
ResolveReferencesСостоит из ResolveProjectReferences и ResolveAssemblyReferences для поиска всех зависимостей.
PrepareResourcesФайлы ресурсов процесса.
ResolveKeySourceРазрешает ключ строгого имени, используемый для подписания сборки, и сертификат, используемый для подписи манифестов ClickOnce.
КомпиляторВызывает компилятор.
ExportWindowsMDFileСоздает файл WinMD из файлов WinMDModule, сгенерированных компилятором.
UnmanagedUnregistrationУдаляет или очищает записи реестра СOM-взаимодействия из предыдущей сборки.
GenerateSerializationAssembliesСоздает сборку XML-сериализации с помощью SGen.exe.
CreateSatelliteAssembliesСоздает одну вспомогательную сборку для каждого уникального языка и региональных параметров в ресурсах.
GenerateManifestsСоздает манифест приложения и развертывания ClickOnce или собственный манифест.
GetTargetPathВозвращает элемент, содержащий продукт сборки (исполняемый файл или сборку) для этого проекта с метаданными.
PrepareForRunКопирует выходные данные сборки в окончательный каталог, если они были изменены.
UnmanagedRegistrationНастраивает записи реестра для COM-взаимодействия.
IncrementalCleanУдаляет файлы, созданные в предыдущей сборке, но не созданные в текущей. Это необходимо для того, чтобы Clean работал в инкрементных сборках.
PostBuildEventТочка расширения проектов для определения задач, выполняемых после сборки.

Настраиваемые пользователем импорты

В дополнение к стандартным операциям импорта существует несколько импортов, которые можно добавить для настройки процесса сборки.

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

Файл Directory.Build.props импортируется с помощью Microsoft.Common.props, поэтому в файле проекта доступны определенные свойства. Их можно переопределить в файле проекта для настройки значений на уровне каждого проекта. Файл Directory.Build.targets считывается в файле после файла проекта. Обычно он содержит целевые объекты, но здесь также можно определить свойства, которые не требуется переопределять для отдельных проектов.

Настройки в файле проекта

Visual Studio обновляет файлы проекта при внесении изменений в обозревателе решений, окнах Свойства или Свойства проекта, но вносить собственные изменения можно также, непосредственно редактируя файл проекта.

Многие модели поведения сборки можно настроить, установив свойства MSBuild либо в файле проекта для локальных настроек проекта, либо, как упоминалось в предыдущем разделе, создав файл Directory.Build.props для глобального задания свойств целых папок проектов и решений. Для нерегламентированных сборок в командной строке или скриптах можно также использовать параметр /p в командной строке, чтобы задать свойства для конкретного вызова MSBuild. Сведения о свойствах, которые можно задать, см. в статье Общие свойства проектов MSBuild.

Следующие шаги

Процесс MSBuild имеет несколько других точек расширения, кроме описанных здесь. Дополнительные сведения см. в статье Настройка сборки и Практическое руководство. Расширение процесса сборки Visual Studio.

Источник

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

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