Я пытаюсь развернуть приложение winforms. В настоящее время я намерен упаковать DLL и исполняемый файл в один исполняемый файл размером около 12 МБ (сжатый). Является ли это стандартной процедурой? Есть ли какие-то недостатки для этого подхода?
Необходимость объединения библиотек DLL и создания единой сборки
Ответы (2)
Microsoft предоставляет для этого инструмент под названием ILMerge. Иметь ввиду:
Вы сразу теряете возможность обновлять только один компонент в своем приложении — вам нужно переупаковывать новые версии и отправлять их одним файлом.
Это не работает для WPF, поэтому может ограничить ваш путь обновления с winforms.
Есть лучшие подходы (задокументированные по ссылке выше) для .NET 4.5.
Кроме того, кто-то создал для него GUI.
Вы можете найти несколько официальных ссылок и довольно хороший список плюсов и минусов в конце этой ветки, где оригинальный автор, задавший аналогичный вопрос, резюмировал отзывы и то, что он узнал:
http://www.pcreview.co.uk/forums/single-multiple-assemblies-big-apps-and-code-reuse-t2659572.html
Короче говоря, основными недостатками являются сложность обслуживания (развертывание новых версий только некоторых функций), потенциальное сокращение времени запуска (весь код загружается заранее) и больший объем памяти, даже если некоторые загруженные функции могут не потребоваться. Потенциальные преимущества, которые я вижу, заключаются в более простом развертывании, потенциально меньших накладных расходах на загрузку сборок по запросу и, возможно, лучшем запутывании кода (с помощью инструментов), если это то, чего вы пытаетесь достичь.
Я предполагаю, что у вас есть какие-то причины, чтобы хотеть это сделать. FWIW, я лично думаю, что это плохая идея.