プラットフォームを任意のCPUとして使用するプロジェクトを含むアプリケーションがあります。VS2008の64ビットマシン(win7)でアプリケーションを実行すると、タスクマネージャープロセスで* 32を確認できます。これは、32ビットモードで実行されていることを意味します。しかし、Platform as Any CPUを使用するアプリケーションは、マシン(私の場合は64ビット)に従って実行されることを読みました。私はみんな混乱しています。説明してください。
3 に答える
実際の実行可能ファイルを作成するプロジェクトが に設定されていて、設定されAnyCPU
ていないことは確かx86
ですか? このプロジェクトとすべての参照プロジェクトを に設定する必要がありますAnyCPU
。これを行うと、プロセスは 64 ビット Windows では 64 ビット プロセスとして (32 ビット Windows では 32 ビット プロセスとして) 実行されます。
アプリケーションの「ビット数」を決定するのは、.EXE プロジェクトのプラットフォーム ターゲットです。参照されている .DLL プロジェクトの「ビット数」が、実行中のアプリケーションの「ビット数」と互換性がない場合、ランタイム エラーが発生します。たとえば、AnyCPU
.EXE プロジェクトがx86
.DLL プロジェクトを参照する場合、32 ビット Windows では正常に実行されますが、64 ビット Windows では実行時エラーで失敗します。
質問は Visual Studio 2008 に関するものですが、Visual Studio 2012 with .NET 4.5 ではanycpu32bitpreferred 設定が導入されました。
anycpu32bitpreferredは、任意のプラットフォームで実行できるようにアセンブリをコンパイルします。アプリケーションは、64 ビットと 32 ビットの両方のアプリケーションをサポートするシステムで 32 ビット モードで実行されます。このオプションは、.NET Framework 4.5 を対象とするプロジェクトに対してのみ指定できます。
この設定をオン (Visual Studio の既定) にすると、AnyCPU
アプリケーションは 64 ビット オペレーティング システムでも 32 ビットとして実行されます。
VS2008 は 32 ビットなので、32 ビット プロセスも起動すると予想されます。別の理由は、32 ビットのみの DLL を参照している可能性がありますか?
VS2008 の外でアプリケーションを実行しようとしましたか? まだ 32 ビット モードですか?
- ビルドに移動 => 構成マネージャー
- アクティブ ソリューション プラットフォーム ドロップダウン リストをクリックし、 を選択します。
- [新しいプラットフォームを入力または選択] ドロップダウン リストで、[x64] を選択します。
- [OK] をクリックします。