Многие здесь, вероятно, знакомы с одним из самых популярных сообщений в блогах Джоэла Спольски, Пожалуйста, сэр, можно мне найти компоновщик, где он просит способ удалить зависимости от .NET framework, чтобы - можно разрабатывать и продавать отдельное приложение.
Джейсон Зандер из команды разработчиков Visual Studio в то время ответил со своим мнением по теме, утверждая, что тема несколько спорная - возможность исправить Проблемы безопасности во время выполнения (среди прочего) были их главной заботой. В целом небольшие накладные расходы того стоили.
Перенесемся в 2009 год. Сейчас несколько групп утверждают, что у них есть компоновщики C #. (Джейсон Зандер даже сам сказал, что для его реализации не потребуется много времени.) Вместо симпатичной, десятки мегабайт загрузки .NET 1.0, теперь у нас есть массивный межплатформенный полный установщик .NET 3.5 объемом 200–300 МБ. который содержит версии .NET для x86, x64 и ia64. Предложения Microsoft по уменьшению размера среды выполнения включают:
- Распакуйте распространяемый пакет, удалите целевые платформы, которые вам не нужны, и снова соберите его.
- Используйте веб-загрузчик, который загружает только библиотеки для вашей платформы.
- Используйте установщик профиля клиента (новый по состоянию на конец 2008 г.), который имеет ограниченные библиотеки и работает только для x86.
Что еще хуже, насколько я понимаю (поправьте меня, если я ошибаюсь), профиль клиента даже не регистрируется в Windows как установленный .NET 3.5. Это означает, что если на компьютере установлено несколько клиентских приложений .NET 3.5, ни одно из них не увидит друг друга, и среда выполнения будет повторно устанавливаться снова и снова!
Я действительно не знаю, о чем здесь думает Microsoft. Даже если предположить, что в наихудшем случае установка будет для одной целевой платформы (например, x64) и необходимо включить только эти библиотеки, вы все равно столкнетесь с накладными расходами в размере более 60 МБ на ваше приложение. Даже одно из самых известных приложений .NET, Paint.NET, было чревато Трудности с установкой приложения из-за огромных зависимостей .NET. Если ОНИ имеют проблемы с распространением бесплатного приложения, как насчет остального мира? В конце концов, им пришлось Создайте загрузчик, который установит Microsoft Installer 3.1, загрузчик среды выполнения .NET и все другие зависимые библиотеки, прежде чем они смогут установить собственное приложение.
Так как насчет этого. Компоновщик. Существуют ли какие-нибудь хорошие из них - или инструмент, который просто позволяет создавать приложение C #, не требуя от пользователя установки массивной среды выполнения .NET?
Обновление: итак, похоже, есть несколько вариантов:
Мононуклеоз:
- Mono имеет собственный компоновщик. Судя по ответу ниже, похоже, что он работает очень хорошо.
.СЕТЬ:
- Кажется, что Xenocode доступен и работает.
- Thinstall - это еще один продукт, который был рекомендован, и он принадлежит VMware.
- Есть еще один компоновщик от Remotesoft. Они объявляют это «обфускатором». Есть какие-нибудь мысли?
- Нашел еще один от Rustemsoft под названием Skater .NET Obfuscator. Кто-нибудь знаком с ними?
- Также был предложен ILmerge от Microsoft; похоже, что он выполняет только часть задачи (т.е. объединяет библиотеки, а не удаляет неиспользуемые биты).
Похоже, инструменты Mono находят применение; как насчет инструментов на основе .NET? Есть ли другой опыт работы с ними, или нам просто придется подождать, пока Microsoft выпустит версию 3.5 для всех? Страшно подумать, сколько времени займет выпуск .NET 4.0 ...