32-bit and 64-bit confusion around x86 and x64 and the .NET Framework and CLR

Basic
1. VS has only x32bit version, NO x64 version.
2. DotNet Framework including basic library (System.*), CLR, JIT compiler, etc, have x32 and x64 version. For example, I have a C:\Windows\Microsoft.NET\ Framework and a C:\Windows\Microsoft.NET\ Framework64 folder.
3. a dotnet assembly only contains IL before first time running, so at that time, it's not process-specific (x32 / x64). By default, the Platform Target is "Any CPU." Remember that our C# or VB compiles to IL, and that IL is basically processor agnostic. It's the JIT that makes the decision at the last minute.
4. When a dotnet assembly is loaded into x32/x64 CLR, the CLR helps you find corresponding dependent modules.
5. That 64-bit process is also having its code JIT compiled to use not the x86 instruction set we're used to, but the AMD64 instruction set. This is important to note: It doesn't matter if you have an AMD or an Intel processor, if you're 64-bit you are using the AMD64 instruction set. The short story is - Intel lost. For us, it doesn't really matter.
6. VS installed on either 32-bit or 64-bit OS can create 32-bit or 64-bit applications, but of course the applications need the corresponding platform to execute.
7. To debug a x64 app on x64 OS, you need VS remote debugger as a must as VS is only x32 app so that it needs a way to debug a x64 app.

MOre detail, please refer to below two:
1. My blog

2. Scott blog

 

For further understanding:

2. Reference to a x32 dotnet assembly for building and then make that app can call corresponding that assembly x32/x64 version at runtime on x32 / x64 OS?

你可能感兴趣的:(framework)