Cannot add reference to project because of a circu

2020-02-09 06:36发布

I created 2 dummy projects in my application and named them BAL and DAL. When I build them, they build successfully. If I add a reference to BAL to the DAL project, it added nicely. But while adding the DAL reference to the BAL project, I get the following error:

A reference to DAL could not be added. Adding this project as a reference would cause a circular dependency.

Can anyone help me to solve this error?

8条回答
2楼-- · 2020-02-09 06:40

This just happened to me. You have a circular dependency, i.e. two projects both referencing each other. You need to make one of them independent of the other. Takes some time and it happens so quick. One second I was happily coding along, and the next I had 45 errors like this. Just took some time but it makes your architecture/program structure better too, helping you sort out dependencies properly.

查看更多
聊天终结者
3楼-- · 2020-02-09 06:44

Here's what you need to do:

  1. Right click on the DAL Project in the solution explorer and select Project dependencies in the context menu.

  2. You will now see a window that shows the project dependencies of the DAL Project. Make sure that BAL isn't checked.

Now you should be able to add your reference...

I hope this helps I've tried to keep it as simple and straight forward as possible.

Explanation:

Your DAL should not be able to access the BAL. Your code reference dependencies should be like this:

MVC project -> BAL -> DAL

The MVC project should reference the BAL, the BAL should reference the DAL. Set up your project like this. Make it work and then you will better understand why this setup is better.

Given:

  1. Data = raw numbers and strings
  2. Information = processed data into something meaningful

Cosider the following: The UI should get its information from the BAL which could be able to compose it's data based on the DAL.

查看更多
何必那么认真
4楼-- · 2020-02-09 06:45

That would cause a circular dependency. What you perhaps want to do instead is have a main application project, which references the BAL, and then BAL referenes DAL. Data access should not need to reference business logic.

查看更多
forever°为你锁心
5楼-- · 2020-02-09 06:45

This problem occurred to me when I was building a WPF application with several layers like repository interface layer, repository service layer, sql service layer, rest service layer and my main WPF UI layer.

  • I resolved this error. I noticed that some of the layers were unnecessarily referencing other projects. I removed this unnecessary reference.
  • Then I noticed that some of my service layer and repository layer had my WPF UI project as reference(My StartUp project); this is what was creating circular reference. I removed this.

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

Conclusion: Check each projects reference dependency and make sure there are no unnecessary reference. Make sure sub layers are not referencing the startup project in the reference.

Hope I was helpful.

查看更多
\"骚年 ilove
6楼-- · 2020-02-09 06:55

You can only reference in one way otherwise you get the error like you said. Just do this: delete the reference from your DAL to your BL and make a new one from your BL to your DAL!

查看更多
贼婆χ
7楼-- · 2020-02-09 06:59

To get around this, add the reference by browsing to the projects DLL after it has been built. Do not select it from the "Projects" tab.

查看更多
登录 后发表回答