WinFormsアプリを“ x86”として実行するように構成できますか再コンパイルせずに?

StackOverflow https://stackoverflow.com/questions/187620

質問

「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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top