WinFormsアプリを“ x86”として実行するように構成できますか再コンパイルせずに?
-
06-07-2019 - |
質問
「Any CPU」用にコンパイルされたWinFormsアプリは「x86」として実行するように構成するアプリを再コンパイルせずに64ビットサーバーで?具体的には、この目的を達成するためにapp.config設定またはコントロールパネルアプレットを探しています。顧客のクライアントはすべてx86ですが、サーバーはx64であり、管理者がシステムを構成および監視できるように、サーバーにWinFormsアプリをインストールします。サーバーのためだけに再コンパイルしたくないのです。
解決
http://からwww.request-response.com/blog/PermaLink,guid,34966ef8-3142-46b2-84e0-372b5c36ddcc.aspx
ただし、制御および このデフォルトの動作もオーバーライドします コードがコンパイルされた後。 という便利なツールがあります SDKに存在するcorflags.exe 'anycpu'を強制的にコンパイルできます 64ビットで32ビットプロセスを使用するコード 世界。
このユーティリティの使用法は、 httpにあります。 //msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx
他のヒント
マネージコードを正しく記述した場合、構成は必要ありません。 64ビットマシンに適切なフレームワークがインストールされている限り、JITプロセスは32ビット要件と64ビット要件の違いを処理します。
自分のコードで気にする必要があるのは、P / Invokeを実行している場合だけです。その場合、HANDLEまたはvoid *型を使用するAPI関数を呼び出すときは常に、System.Int32ではなく、System.IntPtrを常に使用するようにする必要があります。 .NETの世界では、64ビットマシンであっても、intデータ型は常に32ビットです。同様に、どのアーキテクチャでも、longは常に64ビットです。
ただし、IntPtrは常にvoid *のサイズであるため、実行しているマシンのアーキテクチャに応じて適切に異なるサイズのJITになります。
このリンクも参考になりました。 http://blogs.intesoft.net/2007/12/default.aspx