我的.net解决方案中有三个项目 主要项目和两个类库项目。
我发现我需要交叉引用类库项目 我可以这样做吗?是安全还是有一些注意事项?
答案 0 :(得分:3)
当项目在一个解决方案中时,IDE不会让您。有一些微妙的方法来解决它。但是,由于程序集引用尚不可用,因此无法从头开始构建解决方案(即Build + Rebuild)。重构这一点,你可能想要一个两个都可以引用的第三个程序集。
答案 1 :(得分:3)
循环引用可能(通过命令行和一些技巧;不通过IDE)但是是一个主要的痛苦;不要这样做!
为常见类型添加额外程序集,或者合并这两个库。
在许多方面,越少越简单......无数的dll并不意味着你已经达到了纯度 - 这只是一团糟。
答案 2 :(得分:2)
当我遇到这个问题时,我有创建的只有属性的类。可以是Employee
,Customer
,Product
,等等。这些类不需要引用任何其他项目,因此多个项目可以引用它们。
属于这些对象的方法(Employee
,Customer
,Product
)然后在其他项目中进入他们自己的类。
我经常遇到这种情况的一种情况是三层应用程序 - 表示层,业务层和数据访问层。我希望DAL检索数据并填充一个Employee对象,该对象将返回给BLL。如果Employee类在BLL中并且同时具有属性和方法,则没有简单的方法来填充DAL中的Employee对象并将其返回到BLL - 因为BLL必须具有对DAL的引用,因此DAL不能反过来引用BLL。使用仅属性类(Employee
,Customer
,Product
)创建单独的项目是解决此问题的一种方法。
答案 3 :(得分:1)
如果通过“交叉引用”,则表示您要执行以下操作:
1)项目 MAIN 包含对 LIBRARY-ALPHA 和 LIBRARY-BETA
的引用2)项目 LIBRARY-ALPHA 包含对 LIBRARY-BETA
的引用3)项目 LIBRARY-BETA 包含对 LIBRARY-ALPHA
的引用 然后没有。在构建 ALPHA 和 BETA 之前,Visual Studio将无法构建 MAIN 。在构建 BETA 之前,它将无法构建 ALPHA 。在构建 ALPHA 之前,它将无法构建 BETA 。因此,它将无法构建任何东西。