Стоит ли учиться пользоваться MSBuild? - PullRequest
21 голосов
/ 07 сентября 2008

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

Я думаю о ночных сборках и т. Д., Но не могу ли я использовать запланированное событие, использующее встроенную в VS опцию сборки из командной строки? Есть ли лучшие инструменты там?

Ответы [ 10 ]

14 голосов
/ 07 сентября 2008

@ kronoz
Я бы сказал ДА.
Особенность MSBuild в том, что если вы измените свои файлы csproj, добавив в них пользовательские этапы сборки, то эти шаги будут происходить из VS или из MSBuild. Также, если у вас когда-либо есть сервер сборки, вам не нужно устанавливать полную VS, только SDK для сборки ваших проектов.

12 голосов
/ 23 сентября 2008

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

  • сборка сборки в режиме ВЫПУСКА
  • подписывающих сборок со строгим именем
  • выполнение юнит-тестов
  • изменение файлов xml / Web.config-s на лету
  • изменение номера версии сборок
  • проверка FxCop / StyleCop и т. Д. *
  • автоматическое развертывание - создание баз данных SQL, веб-сайтов IIS, служб Windows и т. Д. *
6 голосов
/ 01 февраля 2010

MSBuild определенно стоит изучить для всех, кто пишет программное обеспечение .NET. Причина, по которой сервер сборки для приложений .NET больше не требует установки Visual Studio (как упоминал Эндрю Бернс), заключается в том, что MSBuild теперь является частью .NET Framework.

Знание MSBuild даст вам значительную гибкость в выборе технологий, которые вы используете для реализации непрерывной интеграции. Поскольку я потратил время на изучение MSBuild, мне удалось без особых затруднений изменить систему CI, которую одна из наших команд использовала с CruiseControl.NET на TeamCity. Эти CI-серверы, или что-то вроде FinalBuilder (с которым я не знаком), являются лучшими вариантами для выполнения ночных сборок, чем запланированная задача. Изучение способов реализации пользовательских задач MSBuild даст вам еще большую гибкость в реализации пользовательских сборок. Jivko Petiov перечислил ряд задач, которые MSBuild облегчает. В случае развертывания и настройки базы данных я написал сценарии, которые делают это в MSBuild, и это значительно облегчает процесс разработки и тестирования.

Если Visual Studio Team System находится в вашем будущем, приложения, созданные с использованием MSBuild, будут гораздо легче перемещать в эту среду, чем приложения, созданные с помощью альтернативных средств.

Существует множество ресурсов, которые помогут вам начать работу с MSBuild. Я бы начал с Внутри Microsoft Build Engine . У одного из соавторов также есть масса материалов в Интернете, включая этот сайт и проект на CodePlex .

6 голосов
/ 07 сентября 2008

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

Автоматизированное создание проектов становится все более необходимым по мере увеличения числа разработчиков, работающих над проектом. Для двух разработчиков очень легко написать несовместимый код, который будет ломаться при его объединении (представьте, что я вызываю функцию foo (int x), и вы меняете сигнатуру на foo (int x, int y): когда мы объедините наши базы кода, код сломается.

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

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

4 голосов
/ 07 сентября 2008

Ну, MSBuild встроен, так что если вы делаете что-то простое, тогда да, это рекомендуется.

Но для чего-то вроде ночных сборок я бы предложил FinalBuilder .

См. Этот вопрос об инструментах управления сборкой / конфигурацией.

2 голосов
/ 23 сентября 2008

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

Один из сценариев, когда это может не стоить того, - это когда у вас уже есть автоматизированная / скриптовая система сборки. Например, я сам не занимал время с MSBuild, потому что я использовал NAnt для этой задачи еще до появления MSBuild ...

2 голосов
/ 07 сентября 2008

MSBuild невероятно прост в использовании, вы можете использовать VS для управления проектами и файлами решений и просто передать SLN в MSBuild.

1 голос
/ 29 января 2013

Если вы разрабатываете в .net практикум, он стоит обучения.
Я интегрировал наш процесс сборки с Дженкинсом - изначально Хадсон. Как уже упоминалось выше, MSbuild имеет крутую кривую обучения. вы понимаете основы, вы можете начать настраивать сборку. моё впечатление пока что - может быть наивным, основная часть сценария состоит из

<PropertyGroup>
   <PropertyKey>value</PropertyKey>
</PropertyGroup>
<ItemGroup>
   <ItemListKey>List values<ItemListKey>
</ItemGroup>
<Task Source="" Target="" />
    Besides using for build, I successfully used MSBuild to create a module that manages
    configuration files such as web.config and foo.exe.config files. 
    it is a hybrid module that consists of .net console app, MSBuild script and batch file.
    what this module does is that during a project upgrade, it will create a XML transform       
    template with connection strings, endpoints and appSettings from old configuration
    files. 
    after the project has been upgraded, the module will transform newly deployed  
    configuration
    files without affecting any new entries. if you have dozens of configuration files this  
    is very effective. 
0 голосов
/ 02 марта 2010

@ kronoz Я бы сказал ДА. То есть вещь о MSBuild в том, что если вы измените ваши файлы csproj, чтобы включить пользовательские шаги сборки, то эти шаги произойдет изнутри VS или из MSBuild. Кроме того, если у вас когда-либо есть сборка сервер вам не нужно устанавливать полный VS, только SDK для создания вашего проекты.

==> Это не совсем так. Например, сборка проекта установки на сервере сборки потребует установки Visual Studio !!

0 голосов
/ 20 сентября 2008

Сборка из командной строки с MSBuild относительно проста в освоении. Начните с открытия командной строки Visual Studio и запуска msbuild /?. Просто прочитайте справку один раз, а потом решите, хотите ли вы узнать больше.

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

В прошлом я использовал MSBuild в качестве языка сценариев в сочетании с множеством пользовательских задач. MSBuild имеет фантастическую поддержку журналирования + встроенное управление зависимостями. Тем не менее, это не простой язык для изучения. PowerShell - намного лучший выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...