0

2 つの異なる exe アプリケーションの 2 つの異なる bin フォルダーに、同じ .net マネージド dll (同じバージョン、同じコード) があるとします。RegSvcs.exe /appname:app1 pathtodll1/example.dll と RegSvcs.exe /appname:app2 pathtodll2/example.dll を使用して、2 つの dll を COM+ に登録するとします。1 つの exe が常に app1 com+ を実行し、もう 1 つの exe が app2 com+ を実行すると仮定できますか?

つまり、管理されたアプリケーションであるexeクライアントアプリケーションが、登録時にappnameを変更できる場合、dllを要求するときに実行する必要があるCOM +アプリケーションをどのように解決するのかわかりません...

アプリ名を特定するために、レジストリの CodeBase プロパティを使用しますか?

編集:2回目は登録できないようです。次に、別の質問があります... app2 が実行され、example.dll サービスを要求すると、app1.exe の隣に実際にアップロードされる dll と app2.exe からアップロードされる dll はどれですか? app2 bin フォルダーに example.dll を本当にコピーする必要がありますか?

3 つ目の非 com+ dll (second.dll) をミックスに追加すると、それは 2 つの exe と example.dll によって参照され、どの second.dll が app2.exe アプリ ドメインに読み込まれますか?

4

1 に答える 1

0

ローダーが選択する dll は、コンポーネント サービスとは何の関係もないようです。.net の観点から見た COM+ は、単なる設定ストアです。そのため、指定された dll が通常どおりアプリ ドメインに読み込まれると、それ自体 (つまり、同じバージョンとインターフェイスを持つ dll) が存在するかどうかを COM+ ストアに問い合わせます。存在する場合は、その COM+ 設定を読み取ります。そうでない場合は、(デフォルトの COM+ 設定を使用して) COM+ に自分自身を自動登録しようとしていると思います。

于 2012-10-17T16:47:21.253 に答える