Apakah mungkin untuk memaksa aplikasi C # dikompilasi dengan tag arsitektur "Apa" untuk dijalankan sebagai aplikasi 32 bit pada windows 64 bit?

2

Saya memiliki aplikasi .Net, ditulis dalam bahasa C #. Aplikasi telah dikompilasi dengan bendera "apa saja", yang memungkinkannya berjalan sebagai 64 dan 32 bit, tergantung pada OS yang digunakan.

Saya bertanya-tanya apakah mungkin untuk memaksa aplikasi untuk berjalan sebagai aplikasi 32 bit, pada versi windows 64 bit (semua versi windows 64 bit).

blueberryfields
sumber

Jawaban:

2

Yup, gunakan CorFlags untuk mengatur flag 32BIT pada executable. Misalnya:

corflags.exe myapp.exe /32BIT+

Ini akan mengubah exe Anda, jadi Anda mungkin ingin menyimpan cadangan untuk berjaga-jaga. Anda juga dapat mengembalikan bendera menggunakan /32BIT-bukan/32BIT+

Mauricio Scheffer
sumber
1
Hanya demi kelengkapan: Itu sebenarnya akan memodifikasi myapp.exe, jadi simpan cadangan jika Anda ingin menjalankannya di 64-Bit di beberapa titik.
Michael Stum
0

Informasi yang lebih baru:

Ketika aplikasi .NET dibangun di dalam Visual Studio 2012 dan lebih tinggi, pengaturan default adalah AnyCPU dengan sub-jenis tambahan dari AnyCPU, "Apa pun CPU 32-bit disukai". Ini menyiratkan hal berikut:

  • Jika proses berjalan pada sistem Windows 32-bit, itu berjalan sebagai proses 32-bit. IL dikompilasi ke kode mesin x86.
  • Jika proses berjalan pada sistem Windows 64-bit, itu berjalan sebagai proses 32-bit. IL dikompilasi ke kode mesin x86.
  • Jika proses berjalan pada sistem Windows ARM, itu berjalan sebagai proses 32-bit. IL dikompilasi ke kode mesin ARM.

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

BobbyA
sumber