MSBuild Extension Pack против задач сообщества MSBuild
Я только начинаю делать собственные сценарии MSBuild в первый раз. Я вижу, что есть два стандартных варианта расширения функций: пакет расширений MSBuild и задачи сообщества MSBuild.
Я ищу руководство о том, какие различия между ними, и почему я бы использовал один над другим, или даже оба. Я гуглил на Бинг, но не вижу дрова для деревьев. Любое руководство приветствуется.
3 ответа
Я буду вмешиваться, стоит всего 2 цента. Пара вещей - во-первых, я бы точно не назвал их "стандартными" вариантами. Обе версии предшествуют MSBuild 4.0, а также встроенным функциям задач и свойств, и многие из них в значительной степени устарели. Я написал тысячи строк MSBuild, и пару раз мне приходилось только выполнять задачи из любой из этих библиотек.
Что хорошо в них, так это то, что они довольно модульные. Вы можете выбирать только те сборки и целевые файлы, которые вам нужны, и проверять их в своей кодовой базе, не зацикливаясь на всей реализации. Иногда я выбирал задачу из одной библиотеки, а задачу из другой - в одной сборке. Я всегда предпочитаю использовать простые функции MSBuild 4.0, чем что-то в библиотеке. У меня был интерес к некоторым задачам в библиотеке, но поведение было совсем не то, что мне было нужно, поэтому я собрал свои собственные (задачи на zip вспоминаются для этой задачи, так как я хотел контролировать архивирование в группах, которые не соотносится с исходными папками). Когда вам нужно написать одну пользовательскую задачу, становится действительно легко свернуть другую и другую, все в одной сборке.
В конце я бы сказал, что речь идет не о библиотеке, а об очень конкретной потребности, которая у вас есть для определенных задач в библиотеке, используйте то, что вам нужно, и не путайте свою сборку ни с чем, кроме тот.
В настоящее время я использую задачи сообщества MSBuild в своей работе. У меня не было контактов с другими расширениями, но я могу кое-что рассказать об этой библиотеке.
Плюсы:
- Простота установки (MSI Installer)
- Легко изменить. Исходный код доступен, и у него есть лицензия BSD, поэтому его можно свободно изменять. По сути, вы просто переходите к файлу.cs с тем же именем, что и у задачи, изменяете его, открываете файл.sln и строите решение. Затем вы просто вставляете вывод в C:\Program Files\MSBuild\MsbuildTasks\
- Некоторые расширения очень полезны, если вы не хотите писать много кода, отличного от msbuild. Zipping - это здорово, RegEx также полезна для файлов.
- Я не пробовал другие, но я видел несколько интересных задач, таких как gacutil (установка dll'ов, которые будут видны глобально), создание каталогов IIS, изменение атрибутов файлов...
- И да, вы можете выполнять все эти задачи с MSBuild, но вам нужно будет использовать множество команд "Exec" или использовать функции C# в ваших свойствах, и код станет настоящим беспорядком для чтения.
Минусы:
- отсутствие полезной документации (возможно, я недостаточно хорошо искал, но единственная помощь, которую я нашел, - это загрузка исходного кода, поиск файла.cs для вашей задачи и его анализ).
- Больше всего меня раздражало то, что на сайте проекта нет списка атрибутов для задач. Вы должны погуглить его на форумах или перейти к коду.
- Единственная проблема, которую я получил, это то, что RegexReplace сохраняет файлы в UTF-8.
Мои коллеги написали тысячи сценариев sql, все они закодированы в ANSI. Когда я заменил вещи в них и передал их в SQLCMD, он не смог проанализировать файлы, потому что в конце всех файлов UTF-8 был добавлен один знак (какой-то знак кодирования). Мне нужно было зайти в RegexReplace.cs, изменить параметр кодирования в одной из функций, а затем скомпилировать его. Так что в основном мне нужно было создать свой форк:)
(Две минуты работы, один час объяснения людям, как это работает)
Но с MSBuild не было проблем с разбором файлов UTF-8, поэтому я думаю, что вы можете столкнуться с проблемами только при работе с внешними инструментами для обработки файлов.
Резюме:
Это полезный инструмент, простой в установке и использовании, он может сделать ваш код намного понятнее, проще для понимания и сэкономить время. Я думаю, что самой большой проблемой является документация, но вы можете просто написать название задачи и библиотеки в Google и найти код на форумах, блогах и здесь.
Мои 2 цента - я был в ситуации, когда мне нужно было быстро создать сценарий сборки для проекта, который должен был быть запущен на ванильной машине Windows (без TFS и VS.NET установлены). Сценарий сборки должен был сделать следующее -
- Получить источник из TFS
- Постройте проекты
- Выполнить юнит-тесты
- Запустите FxCop, StyleCop, CodeMetrics
- Создать код документации
- Наконец, результаты по электронной почте
Мне пришлось выйти за рамки MSBuild 4.0, так как я хотел простой способ запустить инструменты, упомянутые выше, а также отправлять электронную почту. Я рассмотрел обе задачи сообщества MSBuild, а также пакет расширений MSBuild. Хотя я читал, что пакет расширений - это сложный полезный пакет, у меня все еще была попытка, но в итоге я использовал пакет Community, так как он был действительно прост в использовании и даже расширил код по сравнению с другим, ДАЖЕ с меньшим количеством документации или ее отсутствием., Пакет расширений, на мой взгляд, является вариантом, только если у вас есть время, чтобы понять, как с ним работать.