在不编译的情况下,如何构建2个相互依赖的DLL?

时间:2019-07-14 18:03:49

标签: c# visual-studio build

我在Visual Studio中有两个单独的DLL。

A需要使用B中的特定方法

还有

B需要使用A中的特定方法

但是,当我分别打开解决方案时,没有人编译(说...are you missing an assembly reference)。是在另一个解决方案中包含一个项目,才是解决该问题的唯一方法吗?

2 个答案:

答案 0 :(得分:2)

如果您处于这种情况,则说明您的体系结构不正确。循环引用严重不是一个好主意,它带您进入DLL混乱的世界。甚至不可能,这就是为什么您会出错。

我记得2002年的情况。NET对我们来说都是新的。该团队提出了一个很好的解决方案,即使用反射从A获取对DLL B的访问。最后,我们纠缠在一起的意大利面,没人能动动脑筋。

解决方案: 仔细考虑什么代码属于一起,以及如何构建适当的“黑匣子”,它们是独立的功能代码。

您可能会考虑定义两个dll都使用的一些接口。还有一个变化是,您不应该首先拥有两个dll。

答案 1 :(得分:2)

为避免循环引用,您需要项目B中的项目A和项目A中的项目B所需的那些方法,以提取到另一个程序集并命名该程序集,例如“ Shared”。

反射可以帮助您访问所需的这些方法,但这是一种不好的做法,没有人会建议您采用这种方式。