Использование ILMerge, вероятно, является самым простым решением. Однако ILMerge имеет недостаток в том, что он изменяет личность ссылочных сборок. Как следствие, вы можете столкнуться с проблемами безопасности или сериализации.
Отличное сообщение в блоге от Simone Busoli обсуждает следующие варианты слияния сборок в один исполняемый файл:
ILMerge
Встраивание сборок в качестве ресурса и подписка на событие AssemblyResolve.
Используя Costura, инструмент с открытым исходным кодом, который заботится о внедрении ссылочных сборок, как описано в шаге 2.