0

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

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

这可能是什么原因?

4

1 回答 1

0

如果 .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,以便它可以列出 type 中的所有方法B。然而,生成的 IL 代码只会引用类B和方法B.M2,因此编译器不需要发出对 C.dll 的程序集引用。

于 2021-04-28T14:09:54.587 回答