我有一个 ASP.Net 项目 (ProjA) 和一个类库项目 (LibB)。我在库中创建了一个自定义类 (ClassC),并添加了对现有 dll (DllD) 的引用。
我在 ProjA 中选择了“添加引用”选项,并从“解决方案”选项卡中选择了 LibB 并添加了引用。
在 ProjA 中,我创建了 ClassC 的实例。令我惊讶的是,它没有编译并显示错误:必须添加 DllD 作为对我的 ProjA 的引用。
这是消息:
类型“XXXX”是在未引用的程序集中定义的。你
必须添加对程序集'YYYYYY,版本= 1.0.0.0,的引用,
文化=中立,PublicKeyToken=xxxxxxx'。
嗯,XXX 是一个类,是 ClassC 的基础,并且 dll 在 LibB 项目中引用。
那么LibB还有什么意义呢?我不想将 DllD 添加到我的 ProjA 项目中,我只想使用依赖于它的自定义类在另一个项目中.
我必须添加这样的dll,这正常吗?
我应该设置什么才能使我的 LibB 包含 DllD dll?
The problem is, LibB
must be exposing some of the types contained in DllD
to your code in ProjA
.1
如果只是consumed这些类型在幕后,那么引用就没有必要了。但显然,这并不是它的作用。所以编译器需要一个引用能够完全理解其中的类型和成员LibB
.
根据您的编辑:
嗯,XXX 是一个类,是 ClassC 的基础,并且 dll 在 LibB 项目中引用。
是的,编译器需要理解该类,包括它的所有基类。如果您使用组合而不是继承,并且ClassC
只是包含对一个的私人引用XXX
例如,不需要引用。
1The most obvious way would be:
public class ClassC {
void DoSomething(SomeTypeFromDllD input){...}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)