私たちは大きなvb6アプリケーションを持っており、変更/修正が必要なので、フレームワーク2.0を対象としたセクションを.netに移動しています。我々はクラスの束を.net dllに移動し、comに適切に公開されるように適切に設定されています。.Net COM DLLがvb6からappdomainsを超えて動作しない
ここに問題があります:MainAppVB6.exeはDOTNET_COM.ComClassをインスタンス化します。それは、これをappdomainに渡すdifferennet dllのメソッドに渡します。これはvb6で書かれたCOMオブジェクトにとってはまったく問題ではありません。
.net appdomain境界を参照し、オブジェクトを直列化可能またはmarshalbyrefにしたい。 vb6に戻ったデータを変更するために.net部分が必要なので、シリアライズ可能ではありません。 Inherits MarshalByRefObjectにクラスをマークすると、「このリモートプロキシには、登録されたサーバーチャネルがリッスンしていないか、アプリケーションにサーバーと通信するための適切なクライアントチャネルがない」というチャネルシンクがありません。
チャンネルがありません - 同じdllのappdomainを経由しています。それは、NETはそれが行う必要がありますCOMとしてオブジェクトを扱っていないようです。
marshalbyrefとserializableの両方を削除すると、comオブジェクトがvb6でインスタンス化されている場合にのみ機能します。 appdomainの.net機能がオブジェクトを作成し、vb6に返されるように割り当てると、vb6は私に自動化エラーを与えます。
非常に醜いkludgeは、新しいappdomainのオブジェクトをシリアル化し、xmlを送り返し、vb6を逆シリアル化することですが、それはばかげているようです。
誰もが考えている?
ありがとうございます。
セス
を有する< ====>ログインするが、別のアプリケーションドメイン内のコードは、プロパティの数十を変更しなければなりません新しいオブジェクトをコレクションに追加することができます。データを解析して、この結果をcomオブジェクトに取り込み、それをvb6に戻します。 私はちょうどそれがシリアル化を返すことに向かって傾いている... –