删除子类DLL的依赖项

时间:2011-07-05 13:19:29

标签: c# assemblies dependencies

(这个问题的上下文特定于XNA,但原则是一般的。)

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

然后我有一个项目B,它扩展了A.Game类,并引用了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,内部依赖于Xna。是因为A.Game是一个子类吗?有没有办法删除这种依赖性要求?

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

我也在transitive dependencies上查看了这个问题,但我没有公开A.Game中的任何字段 - 只是子类。

2 个答案:

答案 0 :(得分:2)

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

你有A的图像,但没有Xna dll。你怎么能实例化Game类?它是包含在Xna dll中的Type的子类,因此这意味着它的基础构造函数也在该dll中。

答案 1 :(得分:0)

您还需要在B中添加依赖项到XNA Framework。

相关问题