在 .NET BCL 中有以下循环引用:

  • System.dllSystem.Xml.dll
  • System.dllSystem.Configuration.dll
  • System.Xml.dllSystem.Configuration.dll

  • 这是 .NET Reflector 的屏幕截图,显示了我的意思:

    .net - Microsoft 如何创建具有循环引用的程序集?-LMLPHP

    Microsoft 如何创建这些程序集对我来说是个谜。是否需要特殊的编译过程才能允许这样做?我想这里正在发生一些有趣的事情。

    最佳答案

    我只能说 Mono 项目是如何做到这一点的。该定理非常简单,尽管它使代码困惑。

    他们首先编译 System.Configuration.dll,不需要引用 System.Xml.dll 的部分。在此之后,他们以正常方式编译 System.Xml.dll。现在魔法来了。他们重新编译 System.configuration.dll,其中需要引用 System.Xml.dll 的部分。现在有了循环引用的成功编译。

    简而言之:

  • A 编译没有代码
    需要 B 和对 B 的引用。
  • B 被编译。
  • A 被重新编译。
  • 关于.net - Microsoft 如何创建具有循环引用的程序集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1316518/

    10-12 22:36
    查看更多