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?
Voici ce que vous devez faire:
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.
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é:
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.
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!
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.
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.
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.
=============================================== =======================
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.
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.