MSBuild Extension Pack против задач сообщества MSBuild - PullRequest
12 голосов
/ 23 июля 2011

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

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

Ответы [ 3 ]

8 голосов
/ 25 июля 2011

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

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

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

1 голос
/ 09 октября 2013

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

  1. Получить исходный код из TFS
  2. Построить проекты
  3. Выполнить модульные тесты
  4. Запустить FxCop,StyleCop, CodeMetrics
  5. Создание документации по коду
  6. Наконец, результаты по электронной почте

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

1 голос
/ 27 июля 2011

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

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

Минусы:

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

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

...