交叉引用程序集

时间:2011-01-03 16:44:34

标签: .net circular-reference project-reference cross-reference

我的.net解决方案中有三个项目 主要项目和两个类库项目。

我发现我需要交叉引用类库项目 我可以这样做吗?是安全还是有一些注意事项?

4 个答案:

答案 0 :(得分:3)

当项目在一个解决方案中时,IDE不会让您。有一些微妙的方法来解决它。但是,由于程序集引用尚不可用,因此无法从头开始构建解决方案(即Build + Rebuild)。重构这一点,你可能想要一个两个都可以引用的第三个程序集。

答案 1 :(得分:3)

循环引用可能(通过命令行和一些技巧;不通过IDE)但是是一个主要的痛苦;不要这样做!

为常见类型添加额外程序集,或者合并这两个库。

在许多方面,越少越简单......无数的dll并不意味着你已经达到了纯度 - 这只是一团糟。

答案 2 :(得分:2)

当我遇到这个问题时,我有创建的只有属性的类。可以是EmployeeCustomerProduct,等等。这些类不需要引用任何其他项目,因此多个项目可以引用它们。

属于这些对象的方法(EmployeeCustomerProduct)然后在其他项目中进入他们自己的类。

我经常遇到这种情况的一种情况是三层应用程序 - 表示层,业务层和数据访问层。我希望DAL检索数据并填充一个Employee对象,该对象将返回给BLL。如果Employee类在BLL中并且同时具有属性和方法,则没有简单的方法来填充DAL中的Employee对象并将其返回到BLL - 因为BLL必须具有对DAL的引用,因此DAL不能反过来引用BLL。使用仅属性类(EmployeeCustomerProduct)创建单独的项目是解决此问题的一种方法。

答案 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 。因此,它将无法构建任何东西。