アプリケーションを 64 ビット マシンで 32 ビットとして実行するにはどうすればよいですか?
コードは C# で記述されています。
アプリケーションを 64 ビット マシンで 32 ビットとして実行するにはどうすればよいですか?
コードは C# で記述されています。
コマンドラインフォーム:
corflags application.exe /32BIT+
ClickOnceの制限により、既存のコードを任意の CPUからx86に変更できなかったときに行った方法は次のとおりです。
32 ビット (プロジェクトのプロパティで x86 をチェックする必要があります) の「ランチャー」アプリケーション (フォームではなく 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 の構成マネージャーに移動すると、プラットフォームを x86 または x64 に設定できます。
これが Winforms、コンソール アプリ、または Windows サービスであると仮定すると、任意の CPU ではなく x86 用の exe をビルドする必要があります。構成マネージャーにあります。
プロジェクトを x86 に設定すると、ARM などの非 x86 プラットフォームでファイルが実行されなくなります。Visual Studio 11 および .NET Framework 4.5 以降、 という名前の新しいオプションがAny CPU 32-bit preferred
あり、それ以降、これがデフォルトでした。結果のコードはどのプラットフォームでも実行できますが、64 ビット プラットフォームでは 32 ビット プロセスとして実行されます。