64ビットマシンで32ビットC#アプリケーションを実行する
質問
64ビットマシンでアプリケーションを32ビットとして強制的に実行するにはどうすればよいですか
コードはC#で記述されています。
解決
プロジェクトを右クリックして、プロパティを選択します。
プロパティで、ビルドタブを選択します。プラットフォームターゲットで、x86を選択します。
Ctrl + Shift + Sを押してすべてのファイルを保存し、ソリューションを右クリックして[クリーン]を選択します。古いバイナリを削除します。それ以降のビルドは32ビットでなければなりません
他のヒント
コマンドラインフォーム:
corflags application.exe /32BIT+
ClickOnce の制限:
32ビット(プロジェクトプロパティでx86をチェックする必要があります) 'launcher'アプリケーション(フォームではなくWindowsアプリケーション)を作成します:
static void Main(string[] args)
{
// Load the assembly
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string assemblyName = Path.Combine(directory, "YourAnyCPUApplication.exe");
Assembly assembly = Assembly.LoadFile(assemblyName);
assembly.EntryPoint.Invoke(null, null);
}
Any CPU プロジェクトのMainメソッドに次のコードを追加します。
if (IntPtr.Size == 4)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// etc...
}
else
{
// Launch application in 32-bit mode
System.Diagnostics.Process.Start(Path.GetDirectoryName(Application.ExecutablePath) + @"\Your32BitApplicationLauncher.exe");
}
これが役立つことを願っています:-)
Visual StudioのConfiguration Managerに移動すると、プラットフォームをx86またはx64に設定できます。
これがWinforms、コンソールアプリ、またはWindowsサービスであると仮定すると、任意のCPUではなくx86のexeをビルドする必要があります。 Configuration Managerにあります。
Visual Studio 11および.NET framwork 4.5以降には、 CPU 32ビット優先
のオプションがありますそしてこれがそれ以来のデフォルトでした
結果のコードはすべてのプラットフォームで実行されますが、64ビットプラットフォームでは32ビットプロセスとして実行されます