Ich habe eine Lösung, die eine Website und eine Klassenbibliothek in Visual Studio 2008 enthält.
Ich habe dann ein anderes Website-Projekt außerhalb der Lösung, das auf die Klassenbibliothek verweisen muss. Ich klicke mit der rechten Maustaste auf den Ordner "Bin" oder "Projekt" und wähle "Referenz hinzufügen". Wählen Sie dann "Mein Klassenbibliotheksprojekt" aus. Es fügt dem Bin-Ordner der Website etwa 15 DLLs hinzu, die die Klassenbibliothek benötigt, aber keine der CS-Dateien erkennt die using-Anweisungen.
using MyLibrary.MyFolder;
Es heißt, dass es nicht behoben werden kann, und ReSharper sagt nur, dass es sicher entfernt werden kann, da es nicht verwendet wird.
ReSharper kann erkennen, dass es die Referenz benötigt, und schlägt vor, "MyLibrary referenzieren und MyFolder verwenden". Ich bin mir nicht sicher, warum ich eine Referenz hinzufügen soll, die ich bereits habe. Wenn ich mit dem Vorschlag gehe, erhalte ich den Fehler
"Referenzmodul fehlgeschlagen. Referenz führt wahrscheinlich zu zirkulären Abhängigkeiten zwischen Projekten."
Ich habe versucht, auf die Eigenschaftenseiten der Websites zu gehen, alle Verweise zu entfernen und sie erneut hinzuzufügen, aber es werden dieselben Fehler angezeigt. Irgendwelche Ideen, warum das nicht funktioniert?
quelle
Antworten:
Überprüfen Sie außerdem, ob die Projekte der neuen Lösung mit einem kompatiblen Framework für das Projekt ausgeführt werden, das Sie einschließen möchten. Ich habe versucht, einen Verweis auf ein 4.0-Projekt in ein 3.5-Projekt aufzunehmen.
quelle
Ich habe herausgefunden, wie ich dieses Problem beheben kann (zumindest für mich). Warum es funktioniert hat, weiß ich nicht genau, aber es hat funktioniert. (Ich habe gerade gegen eine zweite Website versucht, die das gleiche Problem hatte, und die folgende Lösung hat auch dafür funktioniert).
Ich habe versucht, die Projekte normal zu bereinigen und neu zu erstellen, alle meine Visual Studio-Instanzen herunterzufahren und neu zu starten, und sogar versucht, meinen Computer neu zu starten.
Was tatsächlich funktionierte, war das Öffnen des Projekts in Visual Studio, das Schließen aller geöffneten Registerkarten und das anschließende Herunterfahren.
Bevor ich die Registerkarten offen gelassen hatte, weil ich nicht dachte, dass es wichtig ist (und ich schließe die Registerkarten, die ich verwende, kaum jemals).
quelle
Eine Möglichkeit besteht darin, dass die .NET Framework-Zielversion der Klassenbibliothek höher ist als die des Projekts.
quelle
Ich hatte ein ähnliches Problem. Werden alle meine Referenzen von Resharper gestört? Die Lösung, die für mich funktioniert hat, besteht darin, den Resharper-Cache zu leeren und VS neu zu starten
tools-> options-> resharper-> options-> general-> klicken Sie auf die Schaltfläche Caches löschen und starten Sie VS neu
quelle
Ich hatte ähnliche Probleme, bei denen VS manchmal baute und manchmal nicht. Nach einigen Suchen und Versuchen stellte ich fest, dass ich einen mehrdeutigen Verweis auf eine Klasse mit demselben Namen in verschiedenen Bibliotheken hatte ('FileManager'). Das Projekt, das nicht erstellt werden würde, waren meine Unit-Tests, die auf alle Module in meiner Lösung verweisen. Durch das Erzwingen des Verweises auf ein bestimmtes Modul wurden die Dinge für mich geregelt.
Mein Punkt ist: Anstatt ReSharper oder VS die Schuld zu geben, ist es möglicherweise eine gute Idee, noch einmal zu überprüfen, ob es wirklich keinen Zirkelverweis gibt. Mehr als oft können Klassen mit demselben Namen in verschiedenen Modulen Verwirrung stiften und sind oft ein Symptom für schlechtes Design (wie in meinem Fall).
quelle
The type or namespace name 'A' does not exist in the namespace 'B'
. Beachten Sie, dass hierfür keine Warnungen angezeigt werden ...Dies klingt nach einem ähnlichen Problem mit ReSharper:
http://www.jetbrains.net/devnet/thread/275827
Laut einem Benutzer im Thread, der einen Build erzwingt, wird das Problem (STRG + Umschalt + B) nach dem ersten Build behoben.
Klingt speziell in diesem Fall nach einem Problem mit ReSharper. Haben Sie versucht, unabhängig von den Warnungen und möglichen falschen Fehlern zu erstellen?
quelle
Da sich beide in derselben Lösung befinden, fügen Sie anstelle eines Verweises auf die DLL einen Verweis auf das Klassenbibliotheksprojekt selbst hinzu (das Dialogfeld Verweis hinzufügen enthält hierfür eine Registerkarte).Ahh, es ist eine andere Lösung. Hab das verpasst. Wie wäre es, wenn Sie versuchen, anstatt einen Verweis auf das Projekt hinzuzufügen, einen Verweis auf die kompilierte DLL Ihrer Klassenbibliothek hinzuzufügen. Das Dialogfeld "Referenz hinzufügen" verfügt über eine Registerkarte "Durchsuchen", auf der dies ausgeführt wird.
quelle
Wenn Sie Assemblys für Projekte referenzieren, die sich in derselben Lösung befinden, fügen Sie eine Projektreferenz hinzu (über die Registerkarte "Projekte"), anstatt im Ordner \ bin \ Debug (oder \ bin \ Release) (mithilfe von) nach der DLL zu suchen Registerkarte "Durchsuchen"). Siehe Screenshot unten. Suchen Sie nur nach der Assembly / DLL-Datei, wenn es sich um eine externe Assembly handelt.
quelle
Ich habe * .csproj.user (Resharper-Datei) meines Projekts gelöscht, dann alle Registerkarten geschlossen und erneut geöffnet. Danach konnte ich mein Projekt kompilieren und es gab keine Warnungen zum erneuten Schärfen.
quelle
Ich hatte dieses Problem. Ich habe ewig gebraucht, um das herauszufinden. Ich hatte Leute über meiner Schulter, um zu helfen. Wir haben Visual Studio neu erstellt, bereinigt und neu gestartet, und das hat es nicht behoben. Wir haben die Referenzen entfernt und wieder hinzugefügt ...
Alles ohne Erfolg .... Bis!
Die Lösung für mein Problem war, dass meine Klassendeklaration falsch geschrieben war.
Bevor Sie anfangen, mich hart zu beurteilen, lassen Sie mich erklären, warum es nicht dumm war und warum dieser Fehler selbst von den intelligentesten Programmierern gemacht werden könnte.
Da der Fehler schon früh im Namen war, erschien er nicht in der Liste der Intellisense-Klassen, als ich anfing zu tippen.
z.B
Klassenname:
Message.cs
Erklärung:
Auf einen Blick und in einer kleinen Schrift sieht Massage identisch mit Message aus.
Wenn Sie M eingeben, werden zu viele Klassen aufgelistet, also habe ich e eingegeben, das in der falsch eingegebenen Version nicht angezeigt wurde, was den Eindruck erweckte, dass die Klasse nicht vom Compiler erfasst wurde.
quelle
Nach Bestätigung wurde dieselbe Version von asp.net verwendet. Ich habe das Projekt entfernt. Die Lösung wurde gereinigt und das Projekt erneut hinzugefügt. Das hat bei mir funktioniert.
quelle
Ich hatte ein ähnliches Problem in VS 2010, als ich ein Testprojekt für eine MVC 2-Anwendung erstellte. Die Symptome waren identisch.
Die Nachricht von ReSharper war etwas irreführend. Für einen Moment habe ich ReSharper völlig ignoriert und es auf die "manuelle VS-Art" gemacht:
Zu diesem Zeitpunkt habe ich einen Kompilierungsfehler erhalten: Ich hätte auf die verweisen sollen
System.Web.Mvc
in meinem Testprojekt Assembly (seufz). Durch Hinzufügen dieser Referenz wird das Projekt kompiliert. Die ReSharper-Probleme bleiben bestehen, aber der ReSharper-Testläufer funktioniert.Wenn ich VS neu starte, sind auch die ReSharper-Fehler verschwunden. Ich bin mir nicht sicher, ob der Neustart erforderlich ist - das einfache Schließen der CS-Datei kann ausreichen.
Von nun an, wenn ich die ReSharper-Nachricht sehe
Ich werde lesen
quelle
Eine weitere mögliche Lösung, die gerade bei mir funktioniert hat:
Wenn Sie Assembly A haben, die auf Assembly B verweist, die beide auf eine nicht projektbezogene (externe) Assembly X verweisen, und der Code von Assembly B nicht erkennt, dass Sie auf X verwiesen haben, führen Sie die folgenden Schritte der Reihe nach aus:
Anscheinend erkennt VS keinen Verweis auf eine externe Assembly in einem Projekt, der eine Abhängigkeit von einem anderen Projekt ist, das bereits auf das externe Projekt verweist. Indem Sie die Referenzen von Grund auf neu einrichten, überwinden Sie dies. Es ist nur sehr seltsam.
quelle
Ich war mit diesem Problem konfrontiert und habe es gelöst, indem ich Visual Studio geschlossen, Visual Studio wieder geöffnet, die Lösung gereinigt und neu erstellt habe. Das hat bei mir funktioniert.
quelle
Wenn Sie TFS verwenden, funktioniert das Ausführen eines Get latest (rekursiv) nicht immer. Stattdessen erzwinge ich einen Neuzugang, indem ich auf Quellcodeverwaltung => Bestimmte Version abrufen und dann auf beide Felder klicke. Dies funktioniert in der Regel.
Wenn es immer noch nicht funktioniert, zwingt das Löschen der Suo-Datei (normalerweise am selben Ort wie die Lösung) Visual Studio, alle Dateien aus der Quelle abzurufen (und anschließend die Suo-Datei neu zu erstellen).
Wenn dies nicht funktioniert, schließen Sie alle geöffneten Dateien und schließen Sie Visual Studio. Wenn Sie Visual Studio das nächste Mal öffnen, sollte dies behoben sein. Es gibt einen Resharper-Fehler, der auf diese Weise behoben wird.
quelle
Ich war kürzlich auf ein ähnliches Problem gestoßen. Ich arbeite in Visual Studio 2015 mit Resharper Ultimate 2016.1.2. Ich habe versucht, meiner Codebasis eine neue Klasse hinzuzufügen, während ich versucht habe, auf eine Klasse aus einer anderen Assembly zu verweisen, aber Resharper hat einen Fehler für dieses Paket ausgegeben.
Mit Hilfe eines Kollegen stellte ich fest, dass die referenzierte Klasse im globalen Namespace vorhanden war und von der neuen Klasse aus nicht zugänglich war, da sie von einer anderen Entität mit demselben Namen ausgeblendet wurde, die im aktuellen Namespace vorhanden war.
Durch Hinzufügen eines Schlüsselworts 'global ::' vor dem erforderlichen Namespace konnte ich auf die Klasse verweisen, nach der ich tatsächlich gesucht habe. Weitere Details hierzu finden Sie auf der unten aufgeführten Seite:
https://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx
quelle
Wenn beide Projekte in derselben Lösung enthalten sind, ist es angemessener, wenn Sie die Referenz für das benötigte Projekt hinzufügen, nicht die kompilierte DLL.
quelle
Leider hat das einzige, was für mich funktioniert hat, das vollständige Löschen und Neuerstellen des Klassenbibliotheksprojekts, nachdem die darin enthaltenen Klassendateien vorübergehend an eine andere Stelle kopiert wurden. Nur dann erkennt das ASP.Net-Webprojekt die
using
Anweisungen, die sich auf das Klassenbibliotheksprojekt beziehen. Dies war mit Visual Studio 2010 ohne ReSharper.quelle
Ich hatte ein ähnliches Problem. Was für mich funktioniert hat, ist, dass ich eine falsche Klassenbibliothek aus dem Visual Studio hinzugefügt habe . Ich habe mithilfe der Suchfunktion von Visual Studio hinzugefügt.
Was ich tun musste, war Neues Projekt hinzufügen> Visual C #> Klassenbibliothek . Und diese neu hinzugefügte Klassenbibliothek ist die richtige und kann jetzt als Referenz für jedes Projekt hinzugefügt werden.
quelle
Möglicherweise vergessen Sie, eine Referenz hinzuzufügen die Klassenbibliothek, die Sie importieren mussten .
Klicken Sie mit der rechten Maustaste auf die Klassenbibliothek, in die Sie importieren möchten (die mehrere importierte Klassenbibliotheken enthält). -> Hinzufügen-> Referenz (Wählen Sie Projekte-> Lösung-> Wählen Sie die Klassenbibliothek aus, aus der Sie importieren möchten-> OK.)
quelle