Сборка проекта | Build - Сборка в один .exe файл 

Page / - Изменено Alexandr Fokin в 2020/01/05 19:10 

Сборка в один .exe файл 
Изменено Alexandr Fokin
в 2020/01/05 19:10

Оглавление

В платформе .Net по умолчанию приложение состоит из:
•	.exe сборки основного приложения, запускаемый файл
•	.dll файлов сборок библиотек
Существует возможность объединить вышеуказщанные файлы в один .exe. Для этого существует несколько способов:
 1.	Утилита ILMerge
2. Ручное встраивание dll в ресурсов exe (Рихтер).
3. Nuget пакет Costura.Fody, автоматизирующий пункт 2.
4. Также существуют решения для ASP.NET (Рассмотреть позже)
5. В NetCore 3.0 данный функционал добавлен из коробки
1) Утилита ILMerge выполняет интеграцию всех сборок в одну. При этом могут возникать конфликты. И данныйы способ не работает с WPF.
2) Данный метод продемонстрирован в книге Рихтера. Суть его в том, что внешние сборки указываются как встраеваемый ресур в основном проекте. И указывается обработчик для их извлечения
Замечена особенность: если в зависимых сборках присутствуют ресурсы, то функция извлечения должна это учитывать т.к. имена сборки с ресурсами содержит постфикс.
3) Данный пакет автоматизирует способ, указанный в пункте 2.
Материалы
•	Как-скомпилировать-все-проекты-солюшена-в-один-exe
•	Jeffrey Richter: Excerpt #2 from CLR via C#, Third Edition
•	http://wiki.denhome.keenetic.link/bin/view/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8/CLR%20via%20C%23%20%7C%20%D0%94%D0%B6%D0%B5%D1%84%D1%84%D1%80%D0%B8%20%D0%A0%D0%B8%D1%85%D1%82%D0%B5%D1%80/
CLR via C# | Джеффри Рихтер
•	Nuget Costura.Fody
•	Fody is only supported on MSBuild 16 and above. Current version: 15