移除对子类DLL的依赖

本文关键字:依赖 DLL 子类 | 更新日期: 2023-09-27 18:01:18

(这个问题的上下文是特定于XNA的,但原则是通用的)

我有一个项目AGame类扩展Microsoft.Xna.Framework.Game。项目A是一个类库,输出一个DLL。

然后我有一个扩展A.Game类的项目B,并引用A.dll。当我尝试编译B时,我得到这个错误:

The type 'Microsoft.Xna.Framework.Game' is defined in an assembly that is not referenced. You must add a reference to assembly [...]

我不明白为什么会这样;B只依赖于A,而A内部依赖于Xna。是因为a . game是一个子类吗?是否有一种方法可以删除这个依赖项需求?

我的目标是让A自主发行;它只输出一个DLL,任何项目都引用它;无论它内部使用什么,最终用户(开发人员)都不需要。

我也检查了这个问题的传递依赖关系,但我没有在A.Game暴露任何字段-只有子类。

移除对子类DLL的依赖

这是无法避免的。您不能静态地将Xna库链接到A中,因此这意味着为了使A运行,您还需要Xna dll可用。请注意,您可以单独发布A,然后告诉A的任何用户他们也需要Xna dll,但这是您所能做的最好的事情。

图像你有A,但没有Xna dll。如何实例化Game类?它是包含在Xna dll中的Type的子类,这意味着它的基构造函数也在那个dll中

您还需要在XNA框架中添加B依赖项