Get
ILMerge or
ILRepack
or
Jeffrey Richter resource load
For ease of use and if you don't want to modify existing code then use ILMerge. Otherwise use the code reflection method.
Method 1:
Note: ILMerge is
not able to merge WPF assemblies.
ilmerge /target:winexe /out:SelfContainedProgram.exe
Program.exe ClassLibrary1.dll ClassLibrary2.dll
Method 2:
Embed DLLs as resources using Visual Studio, then add code,
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
String resourceName = "AssemblyLoadingAndReflection." +
new AssemblyName(args.Name).Name + ".dll";
using (var stream =
Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) {
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
};
TIP: make sure registering the callback comes before everything
TIP: make sure the resource name is correct, esp. if its in a folder
There's a lot of information out there, let me know if I missed anything.
References
http://www.codeproject.com/Articles/9364/Merging-NET-assemblies-using-ILMerge
http://www.digitallycreated.net/Blog/61/combining-multiple-assemblies-into-a-single-exe-for-a-wpf-application