【问题标题】:ILSpy assembly reference missing缺少 ILSpy 程序集参考
【发布时间】:2021-04-26 10:03:15
【问题描述】:

我有一个项目“A”,它引用了另外两个项目“B”和“C”。

对于这两个参考,这些项目中的实际功能都在“A”中使用。
但是当我用 ILSpy 打开程序集 A.dll 时,它在引用下只显示“B”而不是“C”。
如果我删除缺少的引用,我的项目将不再编译,因此它实际上已被实际使用。

这可能是什么原因?

【问题讨论】:

    标签: .net-assembly ilspy


    【解决方案1】:

    .dll 仅在使用来自被引用程序集的类型时才包含程序集引用。 在编译时,您可能需要一些额外的程序集。

    例子:

    C.dll:

    class C { public void M1() {} }
    

    B.dll:

    class B : C { public void M2() {} }
    

    A.dll:

    class A {
       public static void Main() {
           new B().M2();
       }
    }
    

    在构建A.dll 时,编译器将同时需要B.dll 和C.dll,以便它可以列出B 类型中的所有方法。 然而,生成的 IL 代码只会引用类 B 和方法 B.M2,因此编译器不需要发出对 C.dll 的程序集引用。

    【讨论】:

      猜你喜欢
      • 2018-08-09
      • 1970-01-01
      • 2014-10-05
      • 2014-02-16
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 2010-12-08
      • 2019-10-05
      相关资源
      最近更新 更多