http://www.codeproject.com/KB/dotnet/internals_native.aspx

е люди здесь, вероятно, знакомы с одним изДжоэл Спольски самые популярные посты в блоге,Пожалуйста, сэр, можно мне с линкером, где он взывает о способе удаления зависимостей в .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, Они выставляют счет как «обфускатор». Есть какие-нибудь мысли?Нашел еще один от Рустемсофт под названием Skater .NET Obfuscator, Кто-нибудь знаком с ними?ILmerge от Microsoft также было предложено; похоже, он выполняет только часть задачи (т.е. объединяет библиотеки, а не удаляет неиспользуемые биты).

Похоже, инструменты Mono начинают использоваться; как насчет инструментов на основе .NET? Есть ли у них какой-то другой опыт, или нам просто нужно подождать, пока Microsoft выпустит 3.5 для всех? Страшно подумать, сколько времени потребуется для выпуска .NET 4.0 ...

Ответы на вопрос(8)

Ваш ответ на вопрос