We have a product with about 50 assemblies (DLL files) of which most are needed and loaded at startup of the main executable. The result is that even on a moderately fast machine, loading time of the assemblies and JIT'ing them takes between 2-3 seconds, which is in our case an unacceptable overhead.
If we load the program once and run it multiple times from the same, still running executable, the timings start at several ms. But for end-users this is not an option, they will run it from the commandline.
I would like to speed up the loading on first instantiating the executable. There is a small speedup between a cold start (after reboot of Windows) and a warm start, but only marginally so. What techniques or tools are available in .NET that we can use to speedup loading (note: we tried ILMERGE, which helps about 30% only and NGEN is not an option, it needs to be run at a variety of systems and architectures).
I was considering creating a service and/or a specific CLR hosting environment, but hopefully there is a simpler, more trivial solution. I have not tried GAC'ing yet.