2009-06-26 3 views

答えて

1

ほとんどの場合、うまくいくはずです。安全でない管理コードであろうと、interop/PInvokeであろうと、ネイティブコードを使って何かをしているのであれば注意が必要ですが、すべてのコードが管理されていれば問題はありません。

6

32ビットの外部ライブラリ(COMコンポーネントなど)に依存しない場合、64ビットプロセスとして完全に機能し、そのメリット(大容量アドレス空間、x64命令セットなど)を活用します。 。たいていの場合、ターゲットプラットフォームをx86に設定することで32ビットアプリケーションとして実行できます。

1

純粋な.NETアプリケーションは、変更なしで64ビットオペレーティングシステムで実行されます。

C++/CLIライブラリを使用する場合は、アーキテクチャ固有のCOMコンポーネントを使用するか、P/Invokeコールを実行する場合は、がアプリケーションを64ビット環境用に更新する必要があります。

0

ほとんどの64ビットOSは32ビットアプリケーションを問題なく処理できます。このため、64ビットOS上にProgram Files(x86)フォルダが表示され、多くの古い32ビットアプリケーションを処理することができます。

5

ほとんどの.NETアプリケーションは、VS.NETのデフォルトである任意のCPUの代わりにx86をターゲットにする場合、64ビットで修正されていないはずです。

+0

"そうでない場合は/ターゲットではなく/ x86をターゲットにする..."という意味ですか? x86のみを対象とすると問題が発生します。 – Richard

+0

@リチャード:いいえ、jsimasは正しいです。 x86のみをターゲットにしている場合、アプリケーションは64ビットOS上で32ビットプロセスとして実行されます(64ビットWindows上で実行されるネイティブx86 exeと同じです)。 32ビットOS上で実行されているのとほぼ同じ環境になります。 –

0

ライブラリープラットフォームを混在させて一致させない限り、問題ありません。コンパイル時にはx86をターゲットにしてください。

2

このリンクによると:MSDN - Migrating 32-bit Managed Code to 64-bit

100%タイプの安全な管理コードをお持ちの場合、実際に64ビットプラットフォームにコピーし、64ビットCLRで正常に実行できます。

しかし、あなたは、以下の特徴のいずれかを使用している場合:

  • P /呼び出し
  • 呼び出すCOM機構としてマーシャリングを使用して、安全でないコードの使用
  • を作る
  • オブジェクトを経由して、プラットフォームのAPIを呼び出しを情報を共有するために
  • 状態を永続化する方法としてシリアライズを使用する

これは、アプリケーションが完全に互換性がない可能性があることを示します。

関連する問題