Подтвердить что ты не робот

Невозможно добавить ссылку на проект из-за ошибки циклической зависимости

В моем приложении я создал 2 фиктивных проекта и назвал их BAL и DAL. Когда я их строю, они успешно работают. Если я добавлю ссылку на BAL в проект DAL, она добавится красиво. Но добавив ссылку DAL к проекту BAL, я получаю следующую ошибку:

Ссылка на DAL не может быть добавлена. Добавление этого проекта в качестве ссылки приведет к циклической зависимости.

Может ли кто-нибудь помочь мне решить эту ошибку?

4b9b3361

Ответ 1

Вот что вам нужно сделать:

  • Щелкните правой кнопкой мыши по проекту DAL в проводнике решений и выберите зависимости проекта в контекстном меню.

  • Теперь вы увидите окно, в котором показаны зависимости проекта от проекта DAL. Убедитесь, что BAL не установлен.

Теперь вы можете добавить свою ссылку...

Надеюсь, это поможет мне попытаться сохранить его максимально простым и прямым.

Объяснение:

Ваш DAL не должен иметь доступ к BAL. Ваши зависимостей в ссылках кода должны быть такими:

Проект MVC → BAL → DAL

Проект MVC должен ссылаться на BAL, BAL должен ссылаться на DAL. Настройте свой проект следующим образом. Заставьте это работать, и тогда вы поймете, почему эта настройка лучше.

Предоставлено:

  • Данные= необработанные числа и строки
  • Информация= обработанные данные во что-то значимое

Косайдер: Пользовательский интерфейс должен получить свою информацию из BAL, которая могла бы составить его данные на основе DAL.

Ответ 2

В понятии "слои" подразумевается, что более высокие слои зависят от более низких, а не наоборот. Если 2 "слоя" взаимно зависимы, то один не выше другого, они не являются слоями в каком-либо значимом смысле и поэтому могут считаться находящимися на одном уровне. Такой же базовый принцип применяется для архитектурных компонентов или модулей, как это предусмотрено Studio для зависимостей проекта. Если вы используете этот принцип - подумайте о своих проектах как о модулях проектирования, а не о том, например. просто бросая все в один проект - у вас будет хорошо структурированная кодовая база, которая даст вам гораздо меньше проблем по мере роста.

Ответ 3

Вы можете ссылаться только в одном случае, иначе вы получите ошибку, как вы сказали. Просто сделайте это: удалите ссылку из своего DAL в свой BL и сделайте новую с вашего BL на свой DAL!

Ответ 4

Это вызовет циклическую зависимость. Вместо этого вы, возможно, захотите сделать основной проект приложения, который ссылается на BAL, а затем BAL ссылается на DAL. Для доступа к данным не требуется ссылаться на бизнес-логику.

Ответ 5

Это случилось со мной. У вас есть циклическая зависимость, т.е. Два проекта, которые ссылаются друг на друга. Вы должны сделать одного из них независимым от другого. Проходит некоторое время, и это происходит так быстро. Одна секунда я с удовольствием кодировал, и в следующий раз у меня было 45 ошибок. Просто потребовалось некоторое время, но это также улучшило структуру вашей архитектуры/программы, помогая вам правильно подобрать зависимости.

Ответ 6

В моем случае я скопировал файл проекта без генерации нового ProjectGuid. Поскольку Visual Studio однозначно идентифицирует проекты с использованием ProjectGuid, он предположил, что проект пытается ссылаться на себя.

Ответ 7

Эта проблема возникла у меня, когда я создавал приложение WPF с несколькими уровнями, такими как уровень интерфейса репозитория, уровень обслуживания репозитория, уровень обслуживания SQL, уровень сервиса обслуживания и мой основной слой интерфейса WPF.

  • Я решил эту ошибку. Я заметил, что некоторые из слоев были без необходимости ссылаться на другие проекты. Я удалил это ненужное Справка.
  • Затем я заметил, что некоторые из уровней уровня сервиса и репозитория имел мой проект интерфейса WPF в качестве справочного материала (проект My StartUp); это что создавало круговую ссылку. Я удалил это.

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

Заключение: проверьте зависимость каждой ссылки на проекты и убедитесь, что нет ненужной ссылки. Убедитесь, что подслои не ссылаются на проект запуска в ссылке.

Надеюсь, что я был полезен.

Ответ 8

Чтобы обойти это, добавьте ссылку, просмотрев DLL проектов после ее создания. Не выбирайте его на вкладке "Проекты".