MSBuild: что это такое и когда мне это нужно?

Кажется, я пропустил первый день MsBuild 101. Я ловлю себя на вопросе: «Что он делает, что заменяет и когда мне это нужно?» так как я могу просто нажать F5 и скомпилировать свое приложение.

Какую большую картину я упускаю?


person halfbit    schedule 30.08.2010    source источник
comment
Когда вы нажимаете f5 для компиляции приложения, VS вызывает msbuild; msbuild — это деталь реализации f5.   -  person Eric Lippert    schedule 30.08.2010
comment
Точно так же большинство платформ CI/CD создают проекты .NET Framework, созданные в Visual Studio.   -  person FilBot3    schedule 09.09.2020


Ответы (5)


MSBuild — это платформа сборки, которая позволяет выполнять все действия по сборке в мире Visual Studio.

Лучшим и более практическим примером было бы утверждение, что

  1. .csproj файлов (каждый проект C#) — это msbuild файлов.

  2. Когда вы нажимаете F5, вы в основном (упрощая) вызываете msbuild.exe и передаете свой файл .csproj.

MSBuild расширяет возможности всех функций, благодаря которым работает нажатие F5. От создания папки "debug" или "release" до перетаскивания ссылок в каталог bin\ до вызова CSC... и всего, что между ними... MSBuild "обеспечивает" все это.

Если все, что вам когда-либо понадобится от сборки, — это выходные данные, которые выдает вам F5, то вы знаете обо всем, что вам, вероятно, нужно знать о MSBuild.

Однако в большинстве коммерческих/практических сценариев разработки наступает время, когда возникает необходимость настроить процесс сборки. Наиболее распространенным подходом является автоматизация процесса сборки (используя либо TeamBuild, либо какую-либо доморощенную систему). Вам также может понадобиться

  • создать «пакетное» развертывание
  • ссылка на другую библиотеку вне вашего проекта, которая также активно разрабатывается
  • опубликуйте свою сборку на FTP и отправьте электронное письмо клиенту с уведомлением о ее доступности.

Использование унифицированной и расширяемой платформы сборки (т. е. MSBuild) делает все это возможным, оставаясь при этом частью процесса сборки... сохраняя часть «сборки» конвейера разработки простой и содержательной.

person Taylor Bird    schedule 31.08.2010
comment
Точно так же большинство платформ CI/CD создают проекты .NET Framework, созданные в Visual Studio. - person FilBot3; 09.09.2020

Это полезно, когда вы хотите выполнять автоматизированные сборки и должны реализовать процесс сборки.

Ключ F5 Не процесс сборки и ссылки на него (например, это) хорошее чтение в этом отношении.

Кроме того, файлы вашего проекта Visual Studio являются файлами msbuild. Если вы хотите делать более сложные вещи при сборке (например, запускать минификатор javascript, иметь больший контроль над автоматически сгенерированными идентификаторами версий, пост-обработкой файлов и т. д.), вам придется копаться в msbuild.

person nos    schedule 30.08.2010

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

person David    schedule 30.08.2010
comment
MSbuild использует csc, но может делать и другие вещи. Это NANT от Microsoft. - person nportelli; 30.08.2010
comment
Это больше, чем просто компиляция — что, если вы хотите запустить тесты, отправить результаты тестов, заархивировать артефакты сборки и т. д. - person dsolimano; 30.08.2010
comment
С csc вам нужно составить очень длинный список параметров командной строки, необходимых для компиляции всех ваших файлов. С помощью msbuild вы передаете ему файл проекта или файл решения. Затем он будет следовать всем параметрам сборки, которые вы уже определили в Visual Studio. - person David; 30.08.2010

Я думаю, что серверы сборки должны иметь возможность нажимать клавишу F5 более простым способом, чем через Windows API.

person Petr Kozelek    schedule 31.08.2010

Я знаю, что это довольно устарело, но вот мой взгляд на MSBuild.

Это скриптовый инструмент сборки, очень похожий на ANT. Оба они используют XML для настройки, так что вы сможете довольно быстро во всем разобраться. У обоих есть концепция «Целей», например, гораздо больше сходства в мышлении, если вы знаете ANT, переключение не должно быть жестким.

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

Мне нравится MSBuild, он исправляет некоторые вещи, которые меня раздражают в ANT.

person Dan Devine    schedule 13.05.2011
comment
Я тоже не работал с ANT. Тем не менее, я хорошо знаком с make. Могу ли я считать, что msbuild и ANT похожи на утилиту make в Linux?? - person Darshan L; 02.08.2020