You can use NGen on any machine - in the CLR there is no concept of a "development environment" ... When you use it, make sure that NGen images are actually used (see Native Image Generator (Ngen.exe) for instructions and see FusLogVw note in the document).
You can also use the preliminary JIT, invoking all the code that you expect to run (as Davita suggested), but you need to call each method of all classes, which is not entirely practical.
You have to profile your application to find out where the time is actually spent - it can be reading assemblies from disk, and not JITing itself ... You can roughly see it by launching the application, looking at forms, closing applications and repeating steps. If the second run is much faster, then the application spends most of the time reading from disk rather than JITing.
source share