Для объединения зависимостей (DLL и сборок) вы можете использовать Microsoft ILMerge . ILMerge - это утилита, которая объединяет несколько сборок .NET в одну сборку.
ILMerge берет набор входных сборок и объединяет их в одну
целевая сборка. Первая сборка в списке входных сборок
первичная сборка. Когда основная сборка является исполняемым файлом, тогда
целевая сборка создается как исполняемый файл с той же записью
указать в качестве основной сборки. Кроме того, если первичная сборка имеет
строгое имя и файл .snk, тогда целевая сборка
переподписан указанным ключом, чтобы он также имел строгое имя.
Пример:
@echo off
:: this script needs https://www.nuget.org/packages/ilmerge
:: set your target executable name (typically [projectname].exe)
SET APP_NAME=myapp.exe
:: Set build, used for directory. Typically Release or Debug
SET ILMERGE_BUILD=Debug
:: Set platform, typically x64
SET ILMERGE_PLATFORM=x64
:: set your NuGet ILMerge Version, this is the number from the package manager install, for example:
:: PM> Install-Package ilmerge -Version 3.0.21
:: to confirm it is installed for a given project, see the packages.config file
SET ILMERGE_VERSION=3.0.21
:: the full ILMerge should be found here:
SET ILMERGE_PATH=%USERPROFILE%\.nuget\packages\ilmerge\%ILMERGE_VERSION%\tools\net452
:: dir "%ILMERGE_PATH%"\ILMerge.exe
echo Merging %APP_NAME% ...
:: add project DLL's starting with replacing the FirstLib with this project's DLL
"%ILMERGE_PATH%"\ILMerge.exe Bin\x64\Release\%APP_NAME% ^
/lib:Bin\%ILMERGE_PLATFORM%\%ILMERGE_BUILD%\ ^
/out:%APP_NAME% ^
FirstLib.dll ^
mylib1.dll ^
Microsoft.lib2.dll ^
SomeOtherLib.dll ^
\otherlibdir\otherlib.dll
:Done
dir %APP_NAME%
Если вам трудно использовать ILMerge в командной строке или в процессе сборки, я предлагаю Инструмент ILMerge-Gui . Это дает вам короткий и простой интерфейс для объединения ваших зависимостей в один исполняемый файл.
![IL Merge](https://i.stack.imgur.com/sgt2v.png)
Пожалуйста, не забудьте прочитать сайт ILMerge.