9

Windowsでは32ビットプロセスが64ビットdllをロードできないため、32ビットプロセスが64ビットプロセスと対話できるようにするためにリモーティングを使用しようとしています。

問題は次のとおりです。2つのアプリケーションが同じマシン上にある場合、一方は32ビットでもう一方は64ビットであり、そのようにする必要があります。32ビットまたは64ビットの両方を作成すると、これらのアプリケーションが構築されているすべてのものが破損します。の。

.NETのSystem.Runtime.Remoting.RemotingConfigurationクラスを使用してそのメソッドを呼び出し、リモート処理を介してアクセスするクラスを参照するファイルConfigure()への参照を渡します。App.configMarshalByRefObject

私はそれを動作させましたが、Client、Host、MarshalByRefObjectクラスが32ビットまたは64ビットのいずれかである場合に限ります。それらを混同すると、これは機能しません:私は最終的に:になりBadImageFormatExceptionます

MyRemotingObjectファイルまたはアセンブリ' 'またはその依存関係の1つを読み込めませんでした。間違った形式のプログラムを読み込もうとしました。

両方のアプリを32ビットまたは64ビットにするとすぐに例外はなくなりますが、ここでも、一方が32ビットでもう一方が64ビットである必要があります。

32ビット.NETアプリと.64ビット.NETアプリ間のプロセス間通信を有効にする方法を教えてもらえますか?

4

2 に答える 2

11

ランダムな推測:.NET Remotingは、メタデータを取得するために、アセンブリを両方のプロセスにロードする必要があります。データコントラクト(WCF用語を使用するため)は別のアセンブリにあり、「AnyCPU」としてコンパイルして、どちらのプロセスにもロードできるようにする必要があります。32ビットまたは64ビットに明示的に設定されています。

于 2012-05-30T19:30:41.593 に答える
3

名前付きパイプを介してWCFを使用できます。

ここに簡単な例があります:http: //msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx

于 2012-05-30T19:29:20.777 に答える