Ist es möglich, eine C # -Anwendung, die mit dem Architektur-Tag "Any" kompiliert wurde, als 32-Bit-Anwendung unter 64-Bit-Fenstern auszuführen?

2946
blueberryfields

Ich habe eine .Net-Anwendung, die in C # geschrieben ist. Die Anwendung wurde mit dem "any" -Flag kompiliert, sodass sie je nach Betriebssystem, auf dem sie bereitgestellt wird, sowohl als 64-Bit- als auch als 32-Bit-Bit ausgeführt werden kann.

Ich frage mich, ob es möglich ist, die Anwendung als 32-Bit-Anwendung unter einer 64-Bit-Version von Windows (einer beliebigen 64-Bit-Version von Windows) auszuführen.

2

2 Antworten auf die Frage

2
Mauricio Scheffer

Yup, use CorFlags to set the 32BIT flag on the executable. E.g:

corflags.exe myapp.exe /32BIT+ 

This will modify your exe, so you might wanna keep a backup just in case. You can also revert the flag using /32BIT- instead of /32BIT+

Nur der Vollständigkeit halber: Das ändert tatsächlich myapp.exe. Bewahren Sie also ein Backup auf, wenn Sie möchten, dass es irgendwann in 64-Bit ausgeführt wird. Michael Stum vor 15 Jahren 1
ja, ich füge das der Antwort hinzu, danke Mauricio Scheffer vor 15 Jahren 0
0
BobbyA

Neuere Informationen:

Wenn eine .NET-Anwendung in Visual Studio 2012 oder höher erstellt wird, ist die Standardeinstellung AnyCPU mit einem zusätzlichen Untertyp von AnyCPU, „Any CPU 32-Bit bevorzugt“. Es impliziert Folgendes:

  • Wenn der Prozess auf einem 32-Bit-Windows-System ausgeführt wird, wird er als 32-Bit-Prozess ausgeführt. IL wird in x86-Maschinencode kompiliert.
  • Wenn der Prozess auf einem 64-Bit-Windows-System ausgeführt wird, wird er als 32-Bit-Prozess ausgeführt. IL wird in x86-Maschinencode kompiliert.
  • Wenn der Prozess auf einem ARM-Windows-System ausgeführt wird, wird er als 32-Bit-Prozess ausgeführt. IL wird zu ARM-Maschinencode kompiliert.

Quelle: http://blogs.microsoft.co.il/sasha/2012/04/04/what-anycpu-really-means-as-of-net-45-and-visual-studio-11/