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?

7

Ich habe eine .NET-Anwendung, die mit dem für den Architekturtyp gesetzten "Any" -Flag kompiliert wurde.

Ich frage mich, ob es möglich ist, die Anwendung als 32-Bit-Anwendung in einer (beliebigen) 64-Bit-Version von Windows auszuführen, ohne die Anwendung in eine ausführbare 32-Bit-Datei neu zu kompilieren.

Blaubeerfelder
quelle
Warum willst du aus Neugier?
Ryan Bolger
Einige Treiber sind nur in 32-Bit-Versionen verfügbar. Wenn die App als 64-Bit-App ausgeführt wird, kann sie wahrscheinlich nicht angezeigt oder verwendet werden. Da diese spezielle App sicher als 32- oder 64-Bit-App ausgeführt werden kann, versuche ich herauszufinden, ob ich sie als 32-Bit-App ausführen und auf eine bessere Liste von Treibern zugreifen kann.
blueberryfields
Kann dies auf stackOverflow migriert werden?
Setatakahashi
Gute Idee; stimmte für die Migration
Maximus Minimus

Antworten:

9

Ja, wenn Sie die Projekteigenschaften explizit auf 32-Bit (x86, glaube ich) einstellen, wird sie immer in diesem Modus ausgeführt. Wir hatten dieses Problem bei der Verwendung des SQLite ADO.Net-Anbieters (er suchte nur nach der 32-Bit-Version, die auf einem x64-System nicht geladen werden konnte).

Sie können Corflags verwenden, um das 32-Bit-Bit-Flag (ha ha) in der ausführbaren Datei zu setzen. Hier ist ein Beispiel . Kurz gesagt, Sie werden laufen:

corflags /32BIT+ assembly.exe-or.dll

Sie finden corflags.exe, das mit dem SDK mit Visual Studio installiert wurde, (installed in C:\Program Files\Microsoft SDK\6.0a or 7.0\bin)oder Sie können es aus dem Microsoft Windows SDK für Windows 7 und .NET Framework 3.5 SP1 herunterladen .

Joshua
quelle