我在Visual Studio中有两个单独的DLL。
A
需要使用B
中的特定方法
还有
B
需要使用A
中的特定方法
但是,当我分别打开解决方案时,没有人编译(说...are you missing an assembly reference
)。是在另一个解决方案中包含一个项目,才是解决该问题的唯一方法吗?
答案 0 :(得分:2)
如果您处于这种情况,则说明您的体系结构不正确。循环引用严重不是一个好主意,它带您进入DLL混乱的世界。甚至不可能,这就是为什么您会出错。
我记得2002年的情况。NET对我们来说都是新的。该团队提出了一个很好的解决方案,即使用反射从A获取对DLL B的访问。最后,我们纠缠在一起的意大利面,没人能动动脑筋。
解决方案: 仔细考虑什么代码属于一起,以及如何构建适当的“黑匣子”,它们是独立的功能代码。
您可能会考虑定义两个dll都使用的一些接口。还有一个变化是,您不应该首先拥有两个dll。
答案 1 :(得分:2)
为避免循环引用,您需要项目B中的项目A和项目A中的项目B所需的那些方法,以提取到另一个程序集并命名该程序集,例如“ Shared”。
反射可以帮助您访问所需的这些方法,但这是一种不好的做法,没有人会建议您采用这种方式。