Ich habe eine ausführbare Datei mit Visual Studio 2005 mit C # erstellt. dumpbin meldet, dass es x86 ist und behauptet wird, dass es als x86-Ziel erstellt wurde. Wenn ich versuche, es auszuführen, wird es jedoch irgendwie zu einer 64-Bit-ausführbaren Datei, wie von Task-Manager, Prozess-Explorer und procmon gezeigt, dass es Framework64 lädt. Und es schlägt schließlich fehl, weil eine 32-Bit-DLL nicht geladen werden konnte. Was könnte dieses Verhalten verursachen?
Sie erstellen es mit dem AnyCPU-Ziel. Wenn Sie möchten, dass es auch auf einem 64-Bit-System x86 ist, müssen Sie x86 als Ziel haben.
Wenn Sie auf AnyCPU abzielen, führt der Loader den Prozess als 64-Bit-Prozess auf einem 64-Bit-System aus, aber als 32-Bit-Prozess auf einem 32-Bit-System.
Ändern Sie das Plattformziel von "Any" auf "x86" in der Projekteigenschaften / Build-Konfigurationsliste.
"Was könnte dieses Verhalten verursachen?"
Um bei der Beantwortung dieser Frage technisch genau zu sein, aber nicht ganz in dem Geist, den Sie gefragt haben, ist das Fehlen der 64-Bit-DLL die Ursache für dieses Verhalten.
Warum hat das Programm keine 64-Bit-Version davon?
In ein paar Jahren bezweifle ich, dass 32-Bit-Systeme irgendwo existieren werden, außer dass ARM- und ARM-Systeme neue DLLs benötigen, die sowieso neu kompiliert werden müssen.
Tags und Links .net c# 32bit-64bit