我有一个项目“A”,它引用了另外两个项目“B”和“C”。
对于这两个参考,这些项目中的实际功能都在“A”中使用。
但是当我用 ILSpy 打开程序集 A.dll 时,它在引用下只显示“B”而不是“C”。
如果我删除缺少的引用,我的项目将不再编译,因此它实际上已被使用。
这可能是什么原因?
我有一个项目“A”,它引用了另外两个项目“B”和“C”。
对于这两个参考,这些项目中的实际功能都在“A”中使用。
但是当我用 ILSpy 打开程序集 A.dll 时,它在引用下只显示“B”而不是“C”。
如果我删除缺少的引用,我的项目将不再编译,因此它实际上已被使用。
这可能是什么原因?
如果 .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 的程序集引用。