web-dev-qa-db-fra.com

Impossible d'ajouter une référence au projet en raison d'une erreur de dépendance circulaire

J'ai créé 2 projets fictifs dans ma candidature et les ai nommés BAL et DAL. Quand je les construis, ils construisent avec succès. Si j'ajoute une référence à BAL au projet DAL, cela s'ajoute bien. Mais en ajoutant la référence DAL au projet BAL, j'obtiens le message d'erreur suivant:

Une référence à DAL n'a pas pu être ajoutée. L'ajout de ce projet en tant que référence entraînerait une dépendance circulaire.

Quelqu'un peut-il m'aider à résoudre cette erreur?

32
Venkat

Voici ce que vous devez faire:

  1. Cliquez avec le bouton droit sur le projet DAL dans l'explorateur de solutions et sélectionnez Dépendances du projet dans le menu contextuel. 

  2. Vous verrez maintenant une fenêtre montrant les dépendances du projet DAL. Assurez-vous que BAL n'est pas coché.

Vous devriez maintenant pouvoir ajouter votre référence ...  

J'espère que cela aide que j'ai essayé de le garder aussi simple et direct que possible.

Explication:  

Votre DAL ne devrait pas pouvoir accéder au BAL. Vos dépendances de référence de code devraient être comme ceci: 

Projet MVC -> BAL -> DAL

Le projet MVC doit faire référence au BAL, le BAL doit faire référence au DAL. Configurez votre projet comme ceci. Faites-le fonctionner et vous comprendrez mieux pourquoi cette configuration est meilleure.

Donné:  

  1. Données = nombres et chaînes bruts
  2. Information = données traitées en quelque chose de significatif

Indiquez les éléments suivants: L'interface utilisateur doit obtenir son information auprès du BAL, ce qui lui permet de composer son data à partir du DAL.

31
Prime By Design

Il est implicite dans le concept de "couches" que les couches supérieures dépendent des couches inférieures, et non l'inverse. Si 2 "couches" sont mutuellement dépendantes, l'une n'est pas plus haute que l'autre, ce ne sont pas des couches de manière significative, et peuvent donc être considérées comme appartenant à la même couche. Le même principe de base s’applique aux composants architecturaux ou aux modules, comme l’applique Studio pour les dépendances de projet. Si vous utilisez ce principe, envisagez vos projets comme des modules de conception plutôt que par exemple. Tout jeter dans un seul projet - vous aurez une base de code bien structurée qui vous posera beaucoup moins de problèmes à mesure que sa taille grandit. 

Vous ne pouvez référencer que d'une manière, sinon vous obtenez l'erreur comme vous l'avez dit. Faites simplement ceci: supprimez la référence de votre DAL à votre BL et créez-en une nouvelle de votre BL à votre DAL!

8
jefsmi

Cela provoquerait une dépendance circulaire. Ce que vous souhaiterez peut-être plutôt faire, c'est un projet d'application principal, qui référence le BAL, puis le BAL référence DAL . L'accès aux données ne devrait pas avoir besoin de faire référence à la logique métier.

2
plenderj

Cela m'est juste arrivé. Vous avez une dépendance circulaire, c'est-à-dire que deux projets se référant l'un à l'autre. Vous devez rendre l'un d'eux indépendant de l'autre. Ça prend du temps et ça arrive si vite. Une seconde, j’ai codé joyeusement, et la suivante, j’ai eu 45 erreurs comme celle-là. Cela a pris un peu de temps, mais cela améliore également la structure de votre architecture/programme et vous aide à résoudre correctement les dépendances.

1
richard

Ce problème m'est survenu lorsque je construisais une application WPF avec plusieurs couches telles que la couche d'interface de référentiel, la couche de service de référentiel, la couche de service SQL, la couche de service de repos et la couche principale d'interface utilisateur WPF.

  • J'ai résolu cette erreur. J'ai remarqué que certaines des couches faisaient référence inutilement à d'autres projets. J'ai supprimé cette référence inutile
  • J'ai ensuite remarqué que certaines couches de ma couche de service et de couche de référentiel Avaient mon projet d'interface utilisateur WPF comme référence (projet My StartUp); c'est ce qui créait une référence circulaire. J'ai enlevé ça.

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

Conclusion: Vérifiez la dépendance de chaque projet en matière de référence et assurez-vous qu'il n'y a pas de référence inutile. Assurez-vous que les sous-couches ne font pas référence au projet de démarrage dans la référence.

J'espère que j'ai été utile.

0
Abhay Shiro

Dans mon cas, j'ai copié un fichier de projet sans générer de nouvelle variable ProjectGuid. Etant donné que Visual Studio identifie de manière unique les projets à l'aide de la variable ProjectGuid, il a supposé que le projet essayait de se référencer lui-même.

0
Sebazzz