Подтвердить что ты не робот

MSBuild Extension Pack vs Задачи сообщества MSBuild

Я только начинаю создавать пользовательские сценарии MSBuild в первый раз. Я вижу, что есть два стандартных варианта расширения возможностей: MSBuild Extention Pack и Задачи сообщества MSBuild.

Я ищу некоторые рекомендации о том, какие различия между ними, и почему я буду использовать один над другим или даже оба. У меня есть Googled on Bing, но я не вижу дерева для деревьев. Любое руководство ценится.

4b9b3361

Ответ 1

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

Что приятно в них, так это то, что они довольно модульные. Вы можете выбирать только файлы сборок и целей, которые вам нужны, и проверять их в своей базе кода, не "застревая" со всей реализацией. Время от времени я выбрал вишню задачу из одной библиотеки и задачу из другой, как в том же сборке. Я всегда предпочитаю использовать простые функции MSBuild 4.0 над чем-то в библиотеке. Я интересовался некоторыми задачами в библиотеке, но поведению было совсем не то, что мне было нужно, поэтому я взломал свой собственный (задачи zip приходят на ум для этого, так как я хотел контролировать zipping в группах, которые не коррелирует с исходными папками). После того, как вам нужно написать одну настраиваемую задачу, становится очень легко катить другую и другую, все в одной сборке.

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

Ответ 2

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

  • Простота установки (установщик MSI)
  • Легко модифицировать. Источник доступен, и у него есть лицензия BSD, поэтому он может модифицироваться. В основном, вы просто переходите в файл .cs с тем же именем, что и задача, изменяете его, открываете .sln файл и строите решение. Затем вы просто вставляете вывод в C:\Program Files\MSBuild\MsbuildTasks\
  • Некоторые расширения действительно полезны, если вы не хотите писать много кода, отличного от msbuild. Zipping отлично, операции RegEx по файлам также полезны.
    • Я не пробовал другие, но я видел там несколько интересных задач, таких как gacutil (установка DLL для просмотра в глобальном масштабе), создание каталогов IIS, изменение атрибутов файлов...
    • И да, вы можете выполнять все эти задачи с помощью MSBuild, но вам нужно будет использовать множество команд "Exec" или использовать функции С# для ваших свойств, а код будет действительно бесполезным для чтения.

Минусы:

  • Отсутствие полезной документации (возможно, я не искал достаточно хорошо, но только помощь, которую я нашел, - это загрузка источника, поиск файла .cs для вашей задачи и его анализ)
    • То, что меня больше всего раздражало, заключается в том, что нет списка атрибутов для задач на веб-сайте проекта. Вам нужно google это на форумах, или пойти в код.
  • Единственная проблема, с которой я столкнулся, - это то, что RegexReplace сохраняет файлы в UTF-8.
    Мои коллеги писали, как тысячи sql-скриптов, все закодированные в ANSI. Когда я заменил материал в них и передал их в SQLCMD, тогда он не смог разобрать файлы из-за одного знака, добавленного в конце всех файлов UTF-8 (какой-то знак кодировки). Мне нужно было перейти в RegexReplace.cs, изменить параметр кодирования в одной из функций и затем скомпилировать его. Так что в основном мне нужно было создать свою вилку:)
    (Две минуты работы, один час объяснения людей, как это работает)
    Но MSWuild не разбирался в файлах UTF-8, поэтому я думаю, что вы можете столкнуться с проблемами только при работе с внешними инструментами для обработки файлов.

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

Ответ 3

Мои 2 цента - я был в ситуации, когда мне пришлось быстро создать сборку script для проекта, который должен был запускаться на машине с ванильной Windows (без установки TFS и VS.NET). Строка script должна была делать следующее -

  • Получить источник из TFS
  • Постройте проекты
  • Выполнение тестов устройств
  • Запуск FxCop, StyleCop, CodeMetrics
  • Создать документацию кода
  • Наконец, результаты электронной почты

Мне пришлось смотреть за пределы MSBuild 4.0, так как мне нужен простой способ запускать упомянутые выше инструменты, а также отправлять электронную почту. Я посмотрел как на задачи сообщества MSBuild, так и на пакет расширения MSBuild. Хотя я читал, что пакет расширений - сложный полезный пакет, у меня все еще была попытка, но я закончил использование пакета Community, поскольку он был действительно прост в использовании и даже расширил код по сравнению с другим, EVEN с меньшей или отсутствующей документацией, Extensions Pack, на мой взгляд, является вариантом, только если у вас есть время, чтобы понять, как с ним работать.