web-dev-qa-db-ja.com

Visual Studioアプリケーションのプラットフォームターゲットを設定する目的は何ですか?

どのVSプロジェクトでも、そのプロジェクトのビルドプロパティでプラットフォームターゲットを設定できます。これは、任意のCPU、x86、x64、またはItaniumに設定できます。私の質問は、この値をx86に設定すると、そのプロジェクトをx64マシンで実行できないことを意味しますか?もしそうなら、なぜこれが使われるのですか?常にAny CPUを使用する方が良いのではないですか?

29
Sachin Kainth

この値をx86に設定すると、そのプロジェクトをx64マシンで実行できなくなりますか?

いいえ、32ビットアプリケーション(x86)は64ビットWindows(x64)でも問題なく動作します。すべての64ビットバージョンのWindowsには、Windows on Windows 64(WOW64)と呼ばれる32ビット互換性レイヤーが含まれています。これは通常必要なものです。実際、ほとんどのアプリケーションは64ビットに準拠していてもメリットがありません。

ただし、64ビット(x64)でコンパイルするとdoesは、アプリが32ビット(x86)マシンで実行されないことを意味します。 backwards(64ビットは32ビットを実行できます)は実行できますが、forwards(32ビットは実行できません) 64ビット)。

ご指摘のとおり、Any CPUのコンパイルは常にオプションです。これにより、アプリケーションは32ビットマシンでは32ビットアプリケーション(x86)として、64ビットマシンでは64ビットアプリケーション(x64)として実行できます。これは万能薬のように聞こえますが、コストがかかります。最も注目すべきは、32ビット環境と64ビット環境の両方でアプリケーションを広範囲にテストする必要があるのに対し、32ビット環境(32ビット環境を含む)のみをターゲットにする場合64ビットのホストでは)、1つのビルドをテストするだけで済みます。さらに、追加のワークロードがそれだけの価値があることはめったにありません。ほとんどのビジネスアプリケーションは、64ビット環境の余分なメモリスペースの恩恵を受けず、おそらく64ビットポインターのオーバーヘッドの増加による潜在的な利益を無効にすることになります。

Visual Studio自体が、完全に32ビットのアプリケーションの良い例です。 64ビットバージョンはありませんが、64ビットホストで正常に動作します。 このブログ投稿 は、VSを32ビットに保つ決定がなされた理由を明らかにするのに役立ちます。あなたは自分で決定を下すのに役立つ推論を見つけるかもしれません。

同様に、Microsoft Officeは64ビットパッケージで利用できるようになりましたが、mostのお客様は32ビットバージョンを使用することをお勧めします。 64ビットバージョンには互換性の問題があり、あまりメリットがありません。

41
Cody Gray

32ビットプラットフォームを指定しない場合、Microsoftアプリケーション互換性ツールキットはアプリが32ビットであると判断できないため、ユーザーアカウント制御がオンになっているときに管理者の資格情報を必要とせずにアプリケーションを実行できるようにする32ビットソリューションファイルを作成できません。

1
Chris Daniels