Многие люди здесь, вероятно, знакомы с одним из Джоэлем Спольски самых популярных постов в блоге, Пожалуйста, сэр, могу ли я получить компоновщик , где он взывает о способе удаления зависимостей на платформе .NET, чтобы можно было разрабатывать и продавать автономное приложение.
Джейсон Цандер из команды разработчиков Visual Studio, в то время, ответил со своими взглядами на тему , утверждая, что тема несколько спорна - способность исправлять проблемы безопасности во время выполнения (среди прочих пунктов) была их главная забота. В целом, небольшие накладные расходы стоили того.
Перенесемся в 2009 год. Есть несколько групп, которые утверждают, что имеют компоновщики C #. (Джейсон Зандер даже сам сказал, что его реализация не займет много времени.) Вместо милой десятки-тысячной загрузки .NET 1.0, у нас теперь есть массивный кросс-платформенный установщик .NET 3.5 размером 200-300 МБ. который содержит версии .NET для x86, x64 и ia64. Microsoft предлагает уменьшить размер среды выполнения:
- Распакуйте распространяемый пакет, удалите ненужные целевые платформы и соберите его вместе
- Используйте веб-загрузчик, который загружает только библиотеки для вашей платформы
- Используйте установщик Client Profile (новый на конец 2008 г.), который имеет ограниченные библиотеки и работает только для x86
Что еще хуже, насколько я понимаю (пожалуйста, поправьте меня, если я ошибаюсь), профиль клиента даже не регистрируется в Windows как установленный .NET 3.5. Это означает, что если на компьютере установлено несколько клиентских приложений .NET 3.5, ни одно из них не увидит друг друга, и среда выполнения будет переустанавливаться снова и снова!
Я действительно не знаю, о чем здесь думает Microsoft. Даже если предположить, что наихудший вариант установки будет для одной целевой платформы (например, x64), и нужно включать только эти библиотеки, вы по-прежнему ожидаете, что в вашем приложении будет загружено более 60 МБ. Даже одно из самых известных приложений .NET, Paint.NET, было сопряжено с трудностями при установке приложения из-за огромных зависимостей .NET. Если у них возникают проблемы с распространением бесплатного приложения, как насчет остальных? мир? В итоге им пришлось создать загрузчик, который установил Microsoft Installer 3.1, загрузчик среды выполнения .NET и все другие зависимые библиотеки , прежде чем они смогли установить свое собственное приложение.
Так как насчет этого? Линкер. Существуют ли какие-либо хорошие - или инструмент, который просто позволяет создавать приложения на C #, не требуя, чтобы пользователь установил масштабную среду выполнения .NET?
Обновление: похоже, есть несколько вариантов:
Mono:
.NET:
Похоже, инструменты Mono начинают использоваться; как насчет инструментов на основе .NET? Есть ли у них какой-то другой опыт, или нам просто нужно подождать, пока Microsoft выпустит 3.5 для всех? Страшно подумать, сколько времени потребуется для выпуска .NET 4.0 ...