Сборка в один .exe файл

Версия 12.1 от Alexandr Fokin на 2020/07/26 12:41

В платформе .Net по умолчанию приложение состоит из:

  • .exe сборки основного приложения, запускаемый файл
  • .dll файлов сборок библиотек

Существует возможность объединить вышеуказщанные файлы в один .exe. Для этого существует несколько способов:

1.Утилита ILMerge
2.Ручное встраивание dll в ресурсов exe (Рихтер).
3.Nuget пакет Costura.Fody, автоматизирующий пункт 2. Fody
4.Также существуют решения для ASP.NET (Рассмотреть позже)
5.В NetCore 3.0 данный функционал добавлен из коробки

1) Утилита ILMerge выполняет интеграцию всех сборок в одну. При этом могут возникать конфликты. И данныйы способ не работает с WPF.
2) Данный метод продемонстрирован в книге Рихтера. Суть его в том, что внешние сборки указываются как встраеваемый ресур в основном проекте. И указывается обработчик для их извлечения
Замечена особенность: если в зависимых сборках присутствуют ресурсы, то функция извлечения должна это учитывать т.к. имена сборки с ресурсами содержит постфикс.
3) Данный пакет автоматизирует способ, указанный в пункте 2.

Материалы

Теги: c# assembly
Создал(а) Alexandr Fokin 2020/02/16 21:35