2016-08-05 29 views
0

Ich habe ein Projekt erstellt und kompiliert es als Any CPU. auf x64-Windows. Wie ich Schwierigkeiten habe, dass der Aufbau von meinem Code zu verweisen überprüfte ich die Laufzeit und die Zielplattform:CorFlags sagt mein .NET-Programm läuft als 64bit, während DumpBin bedeutet, dass es 32bit ist

x64vsx86

Wie Sie die Zielplattform sehen können, ist x64, wenn sie auf einem x64-O (wie meine) laufen . Ich habe DumpBin auch:

PE signature found 

File Type: EXECUTABLE IMAGE 

FILE HEADER VALUES 
      14C machine (x86) 
       3 number of sections 
     57A49000 time date stamp Fri Aug 05 15:09:20 2016 
       0 file pointer to symbol table 
       0 number of symbols 
       E0 size of optional header 
      102 characteristics 
        Executable 
        32 bit word machine 

Allerdings, wenn ich laufen CorFlags Es ist mir für die Montage x64 als Plattform zu geben:

Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 9 
ILONLY : 1 
32BIT  : 0 
Signed : 1 

Soweit ich verstehen, wenn ich Any CPU als Zielplattform entschied sich das OS wird ausgewählt, wie die Assembly ausgeführt wird. Bei einem 64-Bit-System läuft es in 64-Bit, bei 32-Bit-Betriebssystem mit 32 Bit.

Also meine Frage ist: Welche Version bin ich eigentlich Targeting? 32 oder 64 Bit?

Antwort

0

Das ist völlig normal. AnyCPU bedeutet, dass es auf jeder CPU ausgeführt werden kann, so dass das Feld in der Kopfzeile nicht relevant sein kann. Wählen Sie etwas, es wählt nur x86. Hält es kompatibel mit alten Windows-Versionen wie Win98 und Win2k.

Die special heroics passieren auf einem 64-Bit-Betriebssystem, das OS-Loader benötigt Hilfe zum Erstellen eines 64-Bit-Prozesses aus einer 32-Bit-ausführbare Datei, die interne Loader-Strukturen patchen müssen. Die mscoree.dll "loader-shim" erledigt diese Aufgabe wie im verlinkten Post beschrieben.

So tun Sie nicht Ziel irgendeine bestimmte Version. Es ist wirklich AnyCPU.

+0

Also würde ich mich besser auf "corflags" verlassen, oder? – HimBromBeere

+0

Vielleicht sind Sie besser auf die Projekteinstellungen angewiesen. Ich kann nicht sagen, warum du diese Frage stellst. –