【问题标题】:Encountering self recursive assembly references in the .NET framework在 .NET 框架中遇到自递归程序集引用
【发布时间】:2010-11-22 01:30:31
【问题描述】:

我正在编写一些 C# 代码,递归遍历基础程序集的引用程序集,构建这些引用的有向无环图以进行拓扑排序。我通过 Assembly 类上的 GetReferencedAssemblies() 方法来做到这一点。

在测试代码时,令我惊讶的是,.NET 框架中的某些程序集显然将自己列为程序集引用。一个这样的例子是 System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089,它列出了 System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 作为参考,可以在 Reflector 中验证。

一旦我意识到这一点,通过比较 AssemblyNames 来打破无限递归是微不足道的,但我对这种情况很好奇,因为我自己无法生成自递归程序集。 (我无法通过 Google 搜索到这方面的任何信息,并且将自己添加为参考不会使生成的程序集自递归。)

简而言之:自递归程序集引用真的“洁净”吗?一些系统程序集引用自己的理由是什么?

谢谢。

【问题讨论】:

    标签: .net reflection assemblies circular-dependency circular-reference


    【解决方案1】:

    昨天有人问了一个题为How did Microsoft create assemblies that have circular references? 的问题,该问题可能会详细说明这是如何完成的。我想不出一个程序集引用自身的正当理由。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-16
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      相关资源
      最近更新 更多