How do I merge multiple .net assemblies into a single assembly?

ILMerge is the tool you're looking for:

ILMerge

The documentation for ILMerge can be found here:

http://research.microsoft.com/en-us/people/mbarnett/ILMerge.aspx


Try ILMerge.

NuGet package here


Using ILMerge is probably the simplest solution. However, ILMerge has the drawback that it changes the identity of referenced assemblies. As a consequence, you might run into issues with security or serialization.

An excellent blog post by Simone Busoli discusses the following options to merge assemblies into a single executable:

  1. ILMerge
  2. Embedding assemblies as a resource and subscribing to the AssemblyResolve event.
  3. Using Costura, an open source tool which takes care of embedding referenced assemblies as described in step 2.