Думаете NuGet предназначен только для Visual Studio (или IDE)? Подумайте еще раз…
Вы уже слышали и от меня, и от многих других, снова и снова о NuGet. О том, что это водораздел в .NET-разработке, что он делает добавление и использование дополнительных библиотек в ваших проектах едва ли не слишком простым. Да, это очень круто, но что если бы вы смогли использовать мощь NuGet в собственных приложениях? Что если вместо Visual Studio целью стало бы ваше приложение, не исходный код проекта, а именно приложение, которое объездит тигра под именем NuGet? Сплавив NuGet с функциями, подобными тем, что находятся в VS Extension Manager, во что-то уникальное для вас и вашего приложения?
Сегодняшнее сообщение пришло из блога Джейсона Хэйли (Jason Haley's) «Интересные находки: 20 июня 2011» и заключается в следующем. Этот проект использует возможности и инфраструктуру NuGet для безболезненного добавления возможностей расширения и надстроек. Ох, вы думаете, я имею в виду Managed Extensibility Framework (MEF)? Это одна часть, только одна. Как ваши пользователи распространяют надстройки? Как они загружаются и используются? Находятся и управляются? Обновляются?
Мэт Гамильтон (Matt Hamilton) подумал об этом и поделился своими идеями и кодом в статье «Использование NuGet для создания надстроек».
Программа Comicster сейчас использует NuGet для управления своими надстройками и обложками (все вместе я называю «расширения»). Использование NuGet в приложении просто! Давайте пройдемся по основным частям.
Сначала вам понадобиться ссылка на NuGet.Core. Вы можете установить ядро, используя сам NuGet, но имейте в виду, что из-за этого сочинительства (версия 1.4) сборка предназначена только для полного «расширенного профиля» .NET Framework – приложения с клиентским профилем не будут создаваться, если вы используете NuGet.Core. Я использовал специальное построение сборки, пока не вышла версия 1.5.
Между прочим, Comicster – это свободно распространяемое приложение с открытым кодом, написанное Мэттом чтобы помочь управлять коллекцией юмористических книг и каталогизировать их.
Следующее сообщение NuGet c MEF продолжает расширение концепции и реализации.
Теперь у нас есть основы установки и удаления пакетов NuGet, следующий шаг состоит в интеграции содержимого этих пакетов в приложение.
У программы Comicster есть два вида расширений: обложки и подключаемые модули. Обложка – это просто несвязанный XAML-файл вместе с ассоциированным контентом, в то время как подключаемый модуль представляет собой одну или несколько сборок, содержащих классы, реализующие один или более экспортируемых интерфейсов Comicster.Core.DLL.
Я просто развиваю идею использования NuGet, и, конечно, MEF, для добавления расширяемости к нашим приложениям. Зачем заниматься этой ерундой, когда всё, что вам нужно, это сосредоточиться на собственном приложении? NuGet, конечно большое колесо, и не нужно переизобретать его для наших приложений…
Если вы создаете расширяемые приложения, или приложения с надстройками и т.п., вам стоит внимательнее ознакомиться со всем этим…
Вот несколько ссылок, которые могут оказаться интересными: