Исходный код вики Сборка в один .exe файл

Версия 16.2 от Alexandr Fokin на 2022/10/04 19:21

Скрыть последних авторов
Alexandr Fokin 1.1 1 В платформе .Net по умолчанию приложение состоит из:
Alexandr Fokin 5.1 2
Alexandr Fokin 1.1 3 * .exe сборки основного приложения, запускаемый файл
4 * .dll файлов сборок библиотек
5
Alexandr Fokin 15.1 6
Alexandr Fokin 1.1 7 Существует возможность объединить вышеуказщанные файлы в один .exe. Для этого существует несколько способов:
Alexandr Fokin 5.1 8
Alexandr Fokin 16.1 9 1 Утилита ILMerge
Alexandr Fokin 15.1 10 Утилита ILMerge выполняет интеграцию всех сборок в одну. При этом могут возникать конфликты. И данныйы способ не работает с WPF.
11
Alexandr Fokin 16.1 12 2 Ручное встраивание dll в ресурсов exe (Рихтер).
Alexandr Fokin 15.1 13 https://docs.microsoft.com/ru-ru/archive/blogs/microsoft_press/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition
14 Данный метод продемонстрирован в книге Рихтера. Суть его в том, что внешние сборки указываются как встраеваемый ресур в основном проекте. И указывается обработчик для их извлечения
15 Замечена особенность: если в зависимых сборках присутствуют ресурсы, то функция извлечения должна это учитывать т.к. имена сборки с ресурсами содержит постфикс.
16 [[Книги.CLR via C# | Джеффри Рихтер.WebHome]]
17
Alexandr Fokin 16.1 18 3 Nuget пакет Costura.Fody, автоматизирующий пункт 2
Alexandr Fokin 15.1 19 [[Разработка.NET.Библиотеки.Fody]]
20
Alexandr Fokin 16.1 21 4 Также существуют решения для ASP.NET (Рассмотреть позже)
Alexandr Fokin 15.1 22
Alexandr Fokin 16.1 23 5 В NetCore 3.0 данный функционал добавлен из коробки
Alexandr Fokin 15.1 24 https://docs.microsoft.com/ru-ru/dotnet/core/deploying/single-file
Alexandr Fokin 1.1 25
Alexandr Fokin 1.4 26
27 Материалы
Alexandr Fokin 5.1 28
Alexandr Fokin 2.4 29 * [[Как-скомпилировать-все-проекты-солюшена-в-один-exe>>https://ru.stackoverflow.com/questions/468942/%D0%9A%D0%B0%D0%BA-%D1%81%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D0%B2%D1%81%D0%B5-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B-%D1%81%D0%BE%D0%BB%D1%8E%D1%88%D0%B5%D0%BD%D0%B0-%D0%B2-%D0%BE%D0%B4%D0%B8%D0%BD-exe]]
Alexandr Fokin 1.5 30