0

I compiled my C# app in 64 bit, but some DLLs are still in 32bit, namely FSharp.Core.dll. I used:

dumpbin /headers FSharp.Core.dll

And it's x86 not x64. But the app still runs correctly. Why is this?

Dennis R
  • 69
  • 1
  • 1
  • 9
  • 32-bit apps can run on 64-bit. It's the reverse that isn't true. – Jeroen Vannevel Aug 13 '16 at 11:36
  • The accepted answer to the question seems to be incorrect - or at least inaccurate. Look at the other answers instead. – ChrisF Aug 13 '16 at 11:37
  • @ChrisF I don't think it's about that. I think it's because `dumpbin` reads the COFF header while the VS C# app puts its actual bitness in the CLR part of the EXE. In other words, OP is probably reading two different pieces of information. – Theodoros Chatzigiannakis Aug 13 '16 at 11:40
  • 1
    Dumpbin.exe will *always* show the "machine" field in the header set to x86. Even though the assembly works just fine a 64-bit process. Lots of technical details behind this, but the simplest way to reason it out is that a .NET assembly does not contain any executable code. It contains **data**, it takes the just-in-time compiler to turn that data it into code that can run on a processor. – Hans Passant Aug 13 '16 at 11:44
  • @HansPassant Indeed. That's why I think this isn't a duplicate of the other question, since the other isn't about CLR assemblies. – Theodoros Chatzigiannakis Aug 13 '16 at 12:24

0 Answers0