由于循环依赖性错误,无法添加对项目的引用

时间:2011-08-17 13:46:35

标签: visual-studio visual-studio-2010 projects-and-solutions circular-dependency

我在我的应用程序中创建了2个虚拟项目,并将它们命名为BALDAL。当我构建它们时,它们会成功构建。如果我将BAL的引用添加到DAL项目中,则会很好地添加。但是在向DAL项目添加BAL引用时,我收到以下错误:

  

无法添加对DAL的引用。添加此项目作为参考将导致循环依赖。

有人可以帮我解决这个错误吗?

9 个答案:

答案 0 :(得分:32)

以下是您需要做的事情:

  1. 右键单击解决方案资源管理器中的DAL项目,然后在上下文菜单中选择项目依赖项

  2. 现在,您将看到一个窗口,显示DAL项目的项目依赖项。确保未选中BAL。

  3. 现在您应该可以添加引用...

    我希望这有助于我尽可能简单直接地保持它。

    说明:

    您的DAL无法访问BAL。您的代码引用依赖项应如下所示:

    MVC项目 - > BAL - > DAL

    MVC项目应该引用BAL,BAL应该引用DAL。像这样设置你的项目。让它工作,然后你会更好地理解为什么这个设置更好。

    鉴于:

    1. 数据 = 原始数字和字符串
    2. 信息 = 将处理后的数据转换为有意义的内容
    3. Cosider以下内容: 用户界面应该从BAL获取信息,这可以根据DAL组成数据

答案 1 :(得分:8)

你只能以一种方式参考,否则你会得到你所说的错误。只需这样做:删除你的DAL到BL的引用,并从你的BL到你的DAL新建一个!

答案 2 :(得分:8)

在“层”的概念中暗示,较高层依赖于较低层,而不是相反。如果2个“层”相互依赖,则一个不高于另一个,它们不是任何有意义的层,因此可以认为是在同一层中。对于体系结构组件或模块,同样的基本原则也适用于Studio实现项目依赖性。如果您使用此原则 - 将您的项目视为设计模块而不是只需将所有内容放入一个项目中 - 您将拥有结构良好的代码库,随着它的大小增长,它将为您提供更少的问题。

答案 3 :(得分:2)

这会导致循环依赖。您可能想要做的是有一个主应用程序项目,它引用BAL,然后BAL引用DAL。 数据访问不应该引用业务逻辑。

答案 4 :(得分:1)

这恰好发生在我身上。您有一个循环依赖项,即两个项目都相互引用。你需要使其中一个独立于另一个。需要一些时间,它发生得如此之快。一秒钟我很乐意编码,接下来我有45个这样的错误。花了一些时间,但它也使您的架构/程序结构更好,帮助您正确地理清依赖关系。

答案 5 :(得分:0)

在我的情况下,我复制了一个项目文件而没有生成新的ProjectGuid。由于Visual Studio使用ProjectGuid唯一标识项目,因此它假定项目试图引用自己。

答案 6 :(得分:0)

当我使用存储库接口层,存储库服务层,sql服务层,休息服务层和我的主WPF UI层等多个层构建WPF应用程序时,我遇到了这个问题。

  • 我解决了这个错误。我注意到有些层是 不必要地引用其他项目。我删除了这个不必要的 参考。
  • 然后我注意到我的一些服务层和存储库层 将我的WPF UI项目作为参考(My StartUp项目);这是 什么是创建循环引用。我删除了这个。

=============================================== =========================

结论:检查每个项目引用依赖项并确保没有不必要的引用。确保子图层未引用参考中的启动项目。

希望我能提供帮助。

答案 7 :(得分:0)

有时,您有两个不同的项目,每个项目都需要另一个方法。在这种情况下,您可以创建第三个项目并将共享代码移到其中,或者选择两个项目之一以将共享代码放入其中。

答案 8 :(得分:-6)

要解决此问题,请在构建后通过浏览到项目DLL来添加引用。不要从“项目”选项卡中选择它。