Visual Studio 2012 で新しい WPF アプリケーションを作成すると、プラットフォーム ターゲットとビルド構成が既定で x86 に設定されます。これはなぜですか?プレーンな WPF アプリケーション (混合モード アセンブリへの参照なし) の場合、AnyCPU を使用する危険性はありますか?
3 に答える
これはなぜですか?
ほとんどのアプリケーションでは、実際には 32 ビットとしてビルドする方が優れています。64 ビットには利点がほとんどなく、ほとんどの場合、重大な欠点がいくつかあります (メモリ使用量がはるかに多い、複数のプラットフォームでの依存関係管理がより複雑になる、デバッグ エクスペリエンスが低下するなど)。
ただし、アプリケーションで大量のメモリを使用できるようにする必要がある場合は、もちろん 64 ビットに利点があります (VS で簡単に切り替えることができます) が、ほとんどのアプリケーションはこのボートには当てはまりません。
これが、VS 2012 の新しいデフォルトがアプリケーションAnyCPUPrefer32Bit
の代わりに使用するAnyCPU
理由です。
このバグ レポートによると、これは、x64 コードを使用する x64 マシンでのエディット コンティニュの問題が原因で行われました。x86 に変更することで、エディット コンティニュが正常に動作します。
AnyCPU に切り替えても危険はありません。私はいつもこれをします。
CPU を指定することを選択した場合は、.exe をいずれかのプラットフォームに自動的に制限します。
絶対に 32 ビットの依存関係がない限り、これを行う理由はほとんどありません。
つまり、「パフォーマンス」の問題はありません。本当の問題は「互換性」です。32 ビット コンポーネントをロードし、64 ビット プラットフォームを使用している場合は、WOW64 を呼び出す必要があります。CLRTIMAGETYPE を使用すると、それを行うことができます。