gpt4 book ai didi

c# - 如何避免引用 DLL 的引用 DLL

转载 作者:行者123 更新时间:2023-12-01 16:48:50 26 4
gpt4 key购买 nike

我有一个 ASP.Net 项目 (ProjA) 和一个类库项目 (LibB)。我在库中创建了一个自定义类 (ClassC),并添加了对现有 dll (DllD) 的引用。

我在 ProjA 中选择了“添加引用”选项,并从“解决方案”选项卡中选择了 LibB 并添加了引用。

在 ProjA 中,我创建了 ClassC 的实例。令我惊讶的是,它没有编译并显示错误:必须添加 DllD 作为对我的 ProjA 的引用。

这是消息:

The type 'XXXX' is defined in an assembly that is not referenced. You must add a reference to assembly 'YYYYYY, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxx'.

嗯,XXX是一个类,是ClassC的基础,并且在LibB项目中引用了该dll。

那么 LibB 的意义何在?我不想将 DllD 添加到我的 ProjA 项目中,我只想在另一个项目中使用依赖于它的自定义类。

我必须添加这样的dll,这正常吗?我应该设置什么才能使我的 LibB 包含 DllD dll?

最佳答案

问题是,LibB 必须将 DllD 中包含的某些类型公开给 ProjA 中的代码。1

如果它只是在幕后使用这些类型,则不需要引用。但显然,这并不是它的作用。因此编译器希望引用能够完全理解 LibB 中的类型和成员。

<小时/>

根据您的编辑:

Well, XXX is a class that is the base of ClassC and the dll is referenced in the LibB project.

是的,编译器需要理解该类,包括它的所有基类。如果您使用组合而不是继承,并且 ClassC 仅包含对 XXX 实例的私有(private)引用,则不需要该引用。

<小时/>

1最明显的方法是:

public class ClassC {
void DoSomething(SomeTypeFromDllD input){...}
}

关于c# - 如何避免引用 DLL 的引用 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23246749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com