This can be an interesting tool (haven’t tried it myself yet, but will do so soon).
ILMerge takes a set of input assemblies and merges them into one target assembly. The first assembly in the list of input assemblies is the primary assembly. When the primary assembly is an executable, then the target assembly is created as an executable with the same entry point as the primary assembly. Also, if the primary assembly has a strong name, and a .snk file is provided, then the target assembly is re-signed with the specified key so that it also has a strong name.
Immediatly as I saw this, I was thinking about my own little pet project that is a simple utility, but due to its design is split into multiple projects in VS.NET and as such generates some dll’s and an exe. But it would be nicer to just have all the code in 1 single .exe. Makes web-deployment and such easier. I know that I could put all of the source files in one ‘build’ project and achieve the same result, but this is a nice alternative.