Note that there are some explanatory texts on larger screens.

plurals
  1. POAvailability of 32-bit .NET on a 64-bit OS
    text
    copied!<p><strong>TLDR:</strong> When installing .NET on a 64-bit OS, are the 32-bit components always present?</p> <p>I used to have my app (<a href="http://ironscheme.codeplex.com/">IronScheme</a>) compiled entirely as <code>AnyCPU</code>. While this works great for all platforms, the 64-bit JIT compiler just seems too slow for my liking (about 550% slower startup and about 25% slower in general). The startup slowness can be solved by NGEN'ng my assemblies and does in fact improve startup time another odd 500% when done so. This is gives about a 2600% improvement on startup time (3700ms vs 140ms) on 64-bit. When both 32-bit and 64-bit are NGEN'd, the startup times are the same, but 32-bit still performs better at runtime.</p> <p>Now given in most cases 64-bit is not needed at all, I think targeting x86 in the executable would just be the best general solution (all the other assemblies are targeting <code>AnyCPU</code>, but from what I can see, the executable determines where it goes). So the idea is to to have 2 startup executables, one targeting x86, the other x64 (or amd64 as MS calls it).</p> <p>When installing on a 32-bit OS, I can be sure no 64-bit components are present. But what about the opposite case? Does the .NET installer install both 32-bit and 64-bit components? This is important as NGEN'ng a non-AnyCPU assembly will fail if the target does not match the runtime.</p> <p>Example: </p> <p><em>"Error compiling IronScheme.Console.exe: This version of is not compatible with the version of Windows you're running."</em></p> <p>Also note that my application is built by default for .NET 2 and in VS2008, so the new <code>AnyCPU (32-bit preferred)</code> option (in VS2012/.NET 4.5) is not an option for me at this time.</p> <p>PS: Sorry, if this has been asked before. I have no idea how to search for this specific issue, and my Google fu failed me too.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload