64 ビット OS で ANYCPU としてコンパイルされた EXE ウィッチを 32 ビット モードで実行することは可能ですか?
開始モードを設定する方法はありますか?
アドバイスをありがとう
NET Framework 4.5 を使用してアプリをコンパイルした場合は可能です。この環境では、[32 ビットを優先] を選択して、基盤となる OS が 64 ビットの場合でもアプリを強制的に 32 ビット モードで実行することができます。
これは、この記事の関連部分です。
.NET 4.5 と Visual Studio 11 ではチーズが移動されました。ほとんどの .NET プロジェクトのデフォルトは再び AnyCPU ですが、AnyCPU には複数の意味があります。AnyCPU の追加のサブタイプ「Any CPU 32 ビット優先」があり、これが新しいデフォルトです (全体として、/platform C# コンパイラ スイッチには、x86、Itanium、x64、anycpu、および anycpu32bitpreferred の 5 つのオプションがあります)。 )。AnyCPU のそのフレーバーを使用する場合、セマンティクスは次のようになります。
- プロセスが 32 ビット Windows システムで実行されている場合、プロセスは 32 ビット プロセスとして実行されます。IL は x86 マシン コードにコンパイルされます。
- プロセスが 64 ビット Windows システムで実行される場合、32 ビット プロセスとして実行されます。IL は x86 マシン コードにコンパイルされます。
- プロセスが ARM Windows システムで実行される場合は、32 ビット プロセスとして実行されます。IL は ARM マシン コードにコンパイルされます。
「AnyCPU」と言うと、 JITがこれを処理します。64 ビット プロセスにロードされると 64 ビット ライブラリがロードされ、32 ビット プロセスにロードされると 32 ビット ライブラリがロードされます。
使用している Visual Studio のバージョンを指定していないため、プロジェクト ファイルを手動で編集して、アプリを強制的に 32 ビットで実行することができます。
<Reference Include="Filename, ..., processorArchitecture=x86">
<HintPath>C:\..\x86\DLL</HintPath>
</Reference>
必要な領域でプラットフォームの値を変更します。
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<Reference ...>....</Reference>
</ItemGroup>