Буду собирать ссылки и мысли по поводу идеального менеджера пакетов для .Net
Преамбула
.Net разработка исторически была не очень “опен сорсовой”, то есть базировалась на проприетарных библиотеках.
Microsoft делает некоторые подвижки в этом направлении – открыл исходники .Net Framework, хостит opensource проекты на
CodePlex, но до совершенства еще далеко – например, в VS нет удобного способа при отладке, к примеру, NHibernate, просматривать исходный код этой бибилиотеки.
При этом OpenSource проектов для .Net просто завались – например
NHibernate,
Spring.Net, майкрософтовские
Pattern&Practices Building Blocks etc.
Есть еще и
The Mono Project, который мало того, что сам opensource, так еще и порождает множество проектов с открытым исходным кодом.
Зачем?
Если я подключаю внешнюю библиотеку (тот же NHibernate) то мне нужно руками следить за всеми зависимостями, котоые она тянет за собой, следить за их версиями, следить за конфликтом версий и тп.
Вместе с тем в Java мире это уже все давно пройденный этап – есть
Maven, который поддерживается всеми основными IDE, есть
Bulildr, есть opensource репозитории, которые подцепляются без проблем. Есть
Ivy the package manager в конце концов.
В Java если ты хочешь разработать проект с использованием например Hibernate или Spring Framework, ты пишешь .pom файл из пяти строчек) – и тот же Maven скачивает тебе нужные версии всех нужных библиотек, со всеми их зависимостями, со всеми документациями и пр.
Что же делать?
Ну, есть
NMaven (который суть плагин для Maven), есть
Byldan, есть предложенный в Хабровской статье менеджер, но как-то оно все не складывается в единую картину.
Я вижу, что идеальный менеджер пакетов должен быть:
- Клоном хорошо зарекомендовавшей себя Java-вской библиотеки (например, того же Maven);
- Совместимым с Visual Studio (т.е иметь плагин, аналогичный Maven integration например в IntelliJ IDEA);
- Использоваться как в .Net так и в Mono – технологии практически идентичные, надо дружить;
- Иметь репозиторий проектов, куда любой уважаемый разработчик сможет залить свой проект для публичного доступа. CodeHaus и Sonatype Nexus – идеалы для подражания.
Но самое главное, как обычно, не технологии. Самое главное – показать .Net сообществу, что подход, принятый в Java мире, отлично подходит и для мира дотнетовского.
Вообщем, тема для размышлений богатейшая.
PS - Вот обсуждение на Хабре (комментарии тоже интересные)
http://habrahabr.ru/blogs/net/68453/
PS2 - Сравнение подходов Java/.Net на RSDN -
http://rsdn.ru/forum/flame.comp/3275597.aspx
PS3 - посмотреть
NPanday
PS4 -
обсужение на stack overflow