J'ai une solution qui contient un site Web et une bibliothèque de classes dans Visual Studio 2008.
J'ai alors un autre projet de site Web en dehors de la solution qui a besoin de référencer la bibliothèque de classes. Je clique avec le bouton droit sur le dossier Bin ou le projet et sélectionnez Ajouter une référence, puis sélectionnez mon projet de bibliothèque de classes, il ajoute la quinzaine de DLL dont la bibliothèque de classes a besoin au dossier bin des sites Web, mais aucun des fichiers .cs ne reconnaît les instructions using.
using MyLibrary.MyFolder;
Il dit qu'il ne peut pas le résoudre, et ReSharper dit simplement qu'il peut être supprimé en toute sécurité car il n'est pas utilisé.
ReSharper peut reconnaître qu'il a besoin de la référence et suggère qu'il «référence MyLibrary et utilise MyFolder». Je ne sais pas pourquoi il suggère d'ajouter une référence que j'ai déjà. Lorsque j'accepte la suggestion, j'obtiens l'erreur
"Impossible de référencer le module. Probablement, la référence produira des dépendances circulaires entre les projets."
J'ai essayé d'accéder aux pages de propriétés des sites Web et de supprimer toutes les références et de les ajouter à nouveau, mais cela donne les mêmes erreurs. Des idées pourquoi cela ne fonctionne pas?
la source
Réponses:
Vérifiez également que les projets de la nouvelle solution s'exécutent sur une infrastructure compatible avec le projet que vous essayez d'inclure. J'essayais d'inclure une référence à un projet 4.0 dans un projet 3.5.
la source
J'ai trouvé comment résoudre ce problème (du moins pour moi). Pourquoi cela a fonctionné, je ne suis pas sûr, mais cela a fonctionné. (J'ai juste essayé contre un deuxième site Web qui avait le même problème et la solution suivante fonctionnait également pour cela).
J'ai essayé le nettoyage normal des projets et la reconstruction, en arrêtant toutes mes instances de Visual Studio et en les redémarrant, j'ai même essayé de redémarrer mon ordinateur.
Ce qui fonctionnait réellement, c'était d'ouvrir le projet dans Visual Studio, de fermer tous les onglets ouverts, puis de le fermer.
Avant, j'avais laissé les onglets ouverts parce que je ne pensais pas que cela importait (et je ne ferme presque jamais les onglets que j'utilise).
la source
Une possibilité est que la version .NET Framework cible de la bibliothèque de classes soit supérieure à celle du projet.
la source
J'ai eu un problème similaire, toutes mes références seront-elles gâchées par Resharper - La solution qui a fonctionné pour moi est de vider le cache de Resharper, puis de redémarrer VS
tools-> options-> resharper-> options-> general-> cliquez sur le bouton clear caches et redémarrez VS
la source
J'ai eu des problèmes similaires où VS construisait parfois et parfois pas. Après quelques recherches et tentatives, j'ai découvert que j'avais une référence ambiguë à une classe avec le même nom dans différentes bibliothèques ('FileManager'). Le projet qui ne serait pas construit était mes tests unitaires qui référencent tous les modules de ma solution. L'application de la référence à un module spécifique a réglé les choses pour moi.
Mon point est le suivant: plutôt que de blâmer ReSharper ou VS, cela peut être une bonne idée de vérifier s'il n'y a vraiment pas une sorte de référence circulaire. Plus que souvent, les classes portant les mêmes noms dans différents modules peuvent prêter à confusion et sont souvent le symptôme d'une mauvaise conception (comme dans mon cas).
la source
The type or namespace name 'A' does not exist in the namespace 'B'
. Notez qu'aucun avertissement neCela ressemble à un problème similaire avec ReSharper:
http://www.jetbrains.net/devnet/thread/275827
Selon un utilisateur du thread, forcer une compilation résout le problème (CTRL + Maj + B) après la première compilation.
Sonne comme un problème avec ReSharper spécifiquement dans leur cas .. Avez-vous essayé de construire indépendamment des avertissements et des fausses erreurs possibles?
la source
Comme ils sont tous les deux dans la même solution, au lieu d'ajouter une référence à la DLL, ajoutez une référence au projet de bibliothèque de classes lui-même (la boîte de dialogue Ajouter une référence aura un onglet pour cela).Ahh, c'est une solution différente. J'ai raté ça. Que diriez-vous d'essayer au lieu d'ajouter une référence au projet en ajoutant une référence à la DLL compilée de votre bibliothèque de classes. La boîte de dialogue Ajouter une référence a un onglet Parcourir qui fait cela.
la source
Après avoir confirmé que la même version d'asp.net était utilisée. J'ai supprimé le projet. nettoyé la solution et rajouté le projet. C'est ce qui a fonctionné pour moi.
la source
Si vous référencez des assemblys pour des projets qui se trouvent dans la même solution, ajoutez une référence de projet (à l'aide de l'onglet "Projets") plutôt que de rechercher la dll dans le dossier \ bin \ Debug (ou \ bin \ Release) (à l'aide de la Onglet "Parcourir"). Voir la capture d'écran ci-dessous. Recherchez uniquement le fichier assembly / dll s'il est considéré comme un assembly externe.
la source
J'ai supprimé * .csproj.user (fichier resharper) de mon projet, puis fermez tous les onglets et rouvrez-le. Après cela, j'ai pu compiler mon projet et il n'y avait aucun avertissement de réaffectation.
la source
J'ai eu ce problème. Il m'a fallu des siècles pour comprendre. J'avais des gens sur mon épaule pour m'aider. Nous avons reconstruit, nettoyé et redémarré Visual Studio et cela ne l'a pas résolu. Nous avons supprimé et rajouté les références ...
Tout cela en vain .... Jusqu'à!
La solution à mon problème était que ma déclaration de classe était mal orthographiée.
Avant de commencer à me juger sévèrement, permettez-moi d'expliquer pourquoi ce n'était pas stupide, et aussi pourquoi cette erreur pourrait être commise même par les programmeurs les plus intelligents.
Comme l'erreur était très tôt dans le nom, elle n'apparaissait pas dans la liste des classes intellisense lorsque j'ai commencé à taper.
par exemple
Nom du cours:
Message.cs
Déclaration:
public class Massage { //code here }
En un coup d'œil et dans une petite police, Massage ressemble à Message.
Taper M listait trop de classes, donc j'ai tapé e, qui n'apparaissait pas dans la version mal typée, ce qui donnait l'impression que la classe n'était pas reprise par le compilateur.
la source
J'ai eu un problème similaire dans VS 2010, lors de la création d'un projet de test pour une application MVC 2. Les symptômes étaient identiques.
Le message de ReSharper était quelque peu trompeur. Pendant un moment, j'ai complètement ignoré ReSharper et l'ai fait "à la manière VS manuelle":
A ce stade, j'ai eu une erreur de compilation: j'aurais dû référencer l'
System.Web.Mvc
assemblage dans mon projet de test (soupir). L'ajout de cette référence entraîne la compilation du projet. Les problèmes de ReSharper persistent, mais le lanceur de test ReSharper fonctionne.Lorsque je redémarre VS, les erreurs ReSharper ont également disparu. Je ne sais pas si le redémarrage est nécessaire - il suffit de fermer le fichier .cs.
A partir de maintenant, quand je vois le message ReSharper
Je vais lire
la source
Une autre solution possible qui a fonctionné pour moi:
Si vous avez l'assembly A, qui fait référence à l'assembly B, qui font tous deux référence à un assembly X non-projet (externe), et que le code de l'assembly B ne reconnaîtra pas que vous avez référencé X, alors essayez les étapes suivantes dans l'ordre:
Apparemment, VS ne reconnaîtra pas une référence à un assembly externe dans un projet qui est une dépendance d'un autre projet qui fait déjà référence à l'externe. En configurant à nouveau les références à partir de zéro, vous surmontez ce problème. C'est juste très étrange.
la source
J'ai fait face à ce problème et je l'ai résolu en fermant Visual Studio, en rouvrant Visual Studio, en nettoyant et en reconstruisant la solution. Cela a fonctionné pour moi.
la source
Si vous utilisez TFS, l'exécution d'un Get latest (récursif) ne fonctionne pas toujours. Au lieu de cela, je force un get latest en cliquant sur Contrôle de source => Obtenir une version spécifique, puis en cliquant sur les deux cases. Cela a tendance à fonctionner.
Si cela ne fonctionne toujours pas, la suppression du fichier suo (qui se trouve généralement au même endroit que la solution) force visual studio à récupérer tous les fichiers de la source (et à reconstruire ensuite le fichier suo).
Si cela ne fonctionne pas, essayez de fermer tous vos fichiers ouverts et de fermer Visual studio. La prochaine fois que vous ouvrez Visual Studio, cela devrait être corrigé. Il y a un bogue de resharper qui est résolu de cette façon.
la source
J'étais tombé sur un problème similaire récemment. Je travaille dans Visual Studio 2015 avec Resharper Ultimate 2016.1.2. J'essayais d'ajouter une nouvelle classe à ma base de code en essayant de référencer une classe d'un autre assembly mais Resharper lèverait une erreur pour ce package.
Avec l'aide d'un collègue, j'ai compris que la classe référencée existait dans l'espace de noms global et n'était pas accessible depuis la nouvelle classe car elle était masquée par une autre entité du même nom qui existait dans l'espace de noms actuel.
L'ajout d'un mot clé 'global ::' avant l'espace de noms requis m'a aidé à référencer la classe que je recherchais réellement. Vous trouverez plus de détails à ce sujet sur la page ci-dessous:
https://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx
la source
Si les deux projets sont contenus dans la même solution, il sera plus approprié si vous ajoutez la référence pour le projet dont vous avez besoin, pas sa DLL compilée.
la source
Malheureusement, la seule chose qui a fonctionné pour moi a été de supprimer complètement et de recréer le projet de bibliothèque de classes, après avoir temporairement copié les fichiers de classe ailleurs. Ce n'est qu'alors que le projet Web ASP.Net reconnaîtra les
using
instructions faisant référence au projet de bibliothèque de classes. C'était avec Visual Studio 2010, sans utiliser ReSharper.la source
J'ai eu un problème similaire. Ce qui a fonctionné pour moi, c'est que j'avais ajouté une mauvaise bibliothèque de classes à partir de Visual Studio . J'ai ajouté en utilisant la fonction de recherche de Visual Studio.
Ce que je devais faire était Ajouter un nouveau projet> Visual C #> Bibliothèque de classes . Et cette bibliothèque de classes nouvellement ajoutée est la bonne et peut maintenant être ajoutée comme référence à n'importe quel projet.
la source
Vous pouvez oublier d' ajouter une référence à la bibliothèque de classes que vous deviez importer.
Faites un clic droit sur la bibliothèque de classes dans laquelle vous souhaitez importer (qui contient plusieurs bibliothèques de classes importées), -> Ajouter-> Référence (Sélectionnez Projets-> Solution-> sélectionnez la bibliothèque de classes à partir de laquelle vous souhaitez importer-> OK)
la source