5

私は C# コードを書いていて、ベース アセンブリの参照アセンブリを再帰的にたどり、これらの参照の有向非巡回グラフを作成してトポロジカル ソートを実行していました。これは、Assembly クラスのGetReferencedAssemblies()メソッドを使用して行っています。

コードをテストしているときに、驚いたことに、.NET フレームワーク内の一部のアセンブリが明らかにアセンブリ参照としてリストされていることがわかりました。そのような例の 1 つがSystem.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089で、Reflector で確認できるように、System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089が参照としてリストされています。 .

これに気づいたら、AssemblyNames を比較して無限再帰を破るのは簡単でしたが、自己再帰アセンブリを自分で生成できなかったので、状況が気になります。(これに関する情報をグーグルで検索することはできません。参照として自分自身を追加しても、結果のアセンブリは自己再帰的になりません。)

要するに、自己再帰アセンブリ参照は本当に「コーシャ」ですか?システムアセンブリのいくつかが自分自身を参照する理由は何ですか?

ありがとう。

4

1 に答える 1

3

A question was asked yesterday entitled How did Microsoft create assemblies that have circular references? that might explain more about how this is done. I cannot think of a valid reason for an assembly to have a reference to itself though.

于 2009-08-23T14:14:10.003 に答える