ILMerge is a utility that can be used to merge multiple .NET assemblies into a single assembly. The first assembly in the list of input assemblies is the primary assembly. When primary assembly is an executable, then target assembly is created as an executable with same entry point as the primary assembly. Also, if primary assembly has a strong name, and a .snk file is provided, then target assembly is re-signed with specified key so that it also has a strong name.
ILMerge runs in v2.0 .NET Runtime, but it's also able to merge v1 or v1.1 assemblies. However it can merge PDB files only for v2 assemblies. Currently, ILMerge works only on Windows-based platforms. It doesn't yet support Rotor or Mono.
More Info: Download