【问题标题】:Can I split a .net DLL without having to recompile other DLLs that reference the original one?我是否可以拆分 .net DLL 而不必重新编译引用原始 DLL 的其他 DLL?
【发布时间】:2017-12-04 14:20:15
【问题描述】:

我有一个 C# 项目,该项目构建到具有两个类 ClassA 和 ClassB 的单个 DLL 中。出于项目管理的原因,我想将 ClassB 移到一个单独的 DLL 中,只保留 ClassA 的原始 DLL。

问题是我有其他 DLL(也是从 C# 编译的)在其原始 DLL 中引用 ClassA 和 ClassB。 ClassA 没问题,但调用 ClassB 会导致 TypeLoadException。

(我可以使用它们的新项目引用重新编译所有其他 DLL,但出于项目管理的原因,我不想这样做。)

有没有一种方法可以部署我的新拆分 DLL 并让其他 DLL 继续工作?或者,我真的需要咬紧牙关,计划部署所有这些文件的新版本吗?

【问题讨论】:

标签: c# .net dll runtime late-binding


【解决方案1】:

您可以使用类型转发来实现这一点。这可以将一个类型移动到另一个程序集。在原始程序集中,您添加一个TypeForwardedTo-属性来表示该类型已被移动。

有关详细信息,请参阅此link

【讨论】:

  • 是否建议在文档中留下注释,说明相应部件已被移动,并且在新项目中应直接引用新组件?我认为人们不希望它永远存在于代码中......
  • @Fildor 是的,如果我要添加或更改使用该类的代码,我会将其添加到团队的文档中并直接使用新位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多