0

サイトが回答を受け入れるか、賞金を追加するように求めているため、これを編集してトリミングして閉じようとしました。

コンソール アプリによって参照されるライブラリで GetUserStoreForAssembly と GetUserStoreForDomain を呼び出す実験を行いましたが、予想よりも多くのストアを取得する場合と少ない場合がある理由がわかりませんでした。

Preet は実験の調整に役立ちましたが、2 つのわずかに異なる問題が発生しました。

  • コンソール アプリを別のディレクトリにコピーしたとき (そのため名前は同じままでした)、2 つのユーザー/アセンブリ ストアを取得しました。

  • ライブラリをコンソール アプリ内の複数のドメインにロードしたとき、共有しないと予想していたときに、それらはすべて同じユーザー/アセンブリ/ドメイン ストアを使用していました。

その時までに、質問は冷たいものでした。私は自分で読んだので、答えを見つけたと思ったので、誰かが確認/修正してくれることを期待して自分で質問に答えました。しかし、それはリストのはるか下にあり、チャンスはありませんでした. 私はちょうどそれを残すつもりでしたが、賞金を受け入れるか追加するように求められました.

そのため、回答をここに移動しました。確認または修正するための役立つコメントを誰かに追加してもらい、それを受け入れて、これが実際に分離ストレージをよりよく理解したいと考えている他の人にとって役立つことを知る必要があります。

最初の質問に対する可能な答え:

もちろん、厳密な名前のアセンブリは厳密な名前で識別されます。弱い名前 (それが正式な用語かどうかはわかりませんが、何でも) は、URL またはファイルの場所によって識別されます。したがって、別のディレクトリにコピーされた同じ弱い名前のアセンブリには、独自の分離されたストアがあります。

2番目の質問に対する可能な回答(これについてはあまり確信が持てません):

GetUserStoreForDomain によって返されるスコープは、マシン、ユーザー、アプリケーション、およびアセンブリ、特に特定のアプリケーション内で実行されているアセンブリに制限されます。

私の実験では複数の追加ドメインが作成されましたが、それらはすべて同じアプリケーションにあります。したがって、それらはすべて同じドメイン ストアを使用しています。

したがって、ドメインの分離をシミュレートするには、実際には 2 つの異なるコンソール アプリケーションからライブラリを参照する必要があります。

これは、ライブラリ (したがって両方のコンソール アプリケーション) に厳密な名前が付けられている場合にのみ適切に機能します。アセンブリを参照すると、アセンブリがコピーされます。つまり、名前が弱い場合、別の分離ストアが作成されます。

厳密な名前を付けて実験全体を試したところ、予想どおり 2 つのドメイン ストアと 1 つのアセンブリ ストアが得られました。

4

2 に答える 2