Обычно результатом компиляции проекта является сборка (assembly) проекта, а также его зависимости (Referenced Assemblies). Однако иногда нужно чтобы результатом был один файл единственный файл, независимый от других сборок. Например простая утилита, которую можно будет куда угодно скопировать и она будет работать.
Пример
Условно говоря после:
compile App\App.csproj
dir App\bin\Release
Получаются:
App.exe
dep1.dll
dep2.dll
Нам же нужно лишь один самодостаточный
App.exe
То есть содержащий в себе
dep1.dll
и
dep2.dll
На Хабре уже присутствует решение со встраиванием зависимостей в ресурсы, здесь я покажу как это сделать с помощью ILMerge и Post Build Event в Visual Studio.
читать как это сделать