Metadatendatei… konnte beim Erstellen von Projekten kein Fehler gefunden werden

98

Jedes Mal, wenn ich Visual Studio 2008 starte, wird beim ersten Versuch, das Projekt auszuführen, der Fehler CS0006 angezeigt. Die Metadatendatei ... wurde nicht gefunden. Wenn ich die komplette Lösung neu erstelle, funktioniert sie.

Einige Informationen zur Lösung:

  • Ich baue im Debug-Modus und Visual Studio beschwert sich darüber, dass dll: s nicht im Release-Ordner gefunden werden.

  • Die Projekte, über die Visual Studio sich beschwert, werden von vielen anderen Projekten in der Lösung verwendet.

  • Ich habe den Standardausgabepfad aller Projekte in ...... \ build \ debug \ ProjectName bzw. ...... \ build \ release \ ProjectName geändert. (Nur um alle Build-Dateien in einem Verzeichnis zu erhalten)

  • Ich habe das gleiche Problem mit einer anderen Lösung.

  • Die Lösung wurde von Grund auf neu erstellt.

  • Die Lösung enthält 9 Projekte. Eine WPF- und 8 Klassenbibliotheken mit dotnet 3.5.

Irgendwelche Ideen, was dieses Problem verursacht?

Robert Höglund
quelle

Antworten:

133

Ich hatte das ähnliche Problem, bei dem "Metadaten nicht gefunden werden konnten". Stellen Sie in der Lösungseigenschaft sicher, dass das Kontrollkästchen "Build" in Build / Configuration Manager für jedes Projekt aktiviert ist .

Uprock7
quelle
16
Für alle, die es nicht finden können, verweist Build / Configuration Manager auf den Menüpunkt Build -> Configuration Manager.
John Kurlak
4
Ich bin gerade auf dieses Problem gestoßen. Der Grund war ein weiterer Fehler, der dazu führte, dass das referenzierte Projekt nicht erfolgreich erstellt wurde. Dies war eine saubere Kasse, so dass keine DLL-Dateien aus früheren erfolgreichen Builds vorhanden waren. Beheben Sie die Fehler und stellen Sie sicher, dass ein referenziertes Projekt korrekt erstellt wird.
Moulde
9
Gelegentlich hilft auch dies nicht weiter, wie Nick oben bemerkt hat. In diesem Fall hat das Schließen und Neustarten von VS bei mir immer funktioniert. YMMV.
Philofinfinitejest
3
Das Problem wurde nicht gelöst. Ich habe VS neu gestartet und das Problem wurde dadurch nicht gelöst.
Shimmy Weitzhandler
26

Dies wird normalerweise durch ein Projekt verursacht, auf das in einer anderen Lösung verwiesen wird als das, das den Fehler auslöst. Wenn Sie die andere Lösung bereinigen oder den Code verzweigen, wird dieser Fehler höchstwahrscheinlich angezeigt. Die Lösung besteht darin, in der Liste der Fehler "Metadaten nicht gefunden" nach unten zu scrollen und die Verweise auf die Projekte zu überprüfen. 9/10 Mal wird ein fehlerhafter Verweis auf ein Projekt angezeigt, das nicht in dieser Lösung enthalten ist. Fügen Sie die Projekte hinzu, um die Referenzfehler zu beheben, und erstellen Sie sie neu. Das sollte es beheben.

(Ich bin heute gerade darauf gestoßen und habe es in der Vergangenheit getan, und das hat IMMER funktioniert)

Chris T.
quelle
Nur die Projekte, die in meiner Lösung enthalten sind, beschweren sich.
Der Muffin-Mann
7

Ich hatte dieses Problem, nicht sicher, ob es helfen wird, aber mein Problem wurde dadurch verursacht, dass zwei verschiedene Versionen desselben Projekts von zwei verschiedenen Lösungen referenziert wurden. Wenn ich die Lösung zuerst mit dem Verweis auf das richtige Projekt erstellte, wurde die zweite Lösung einwandfrei erstellt. Wenn ich jedoch die erste Lösung bereinigte und versuchte, die zweite Lösung zu erstellen, schlug dies mit diesen DLL-Referenzfehlermeldungen fehl.

Die Lösung für mich bestand darin, herauszufinden, dass ich zwei Projekte mit demselben Namen hatte, die versehentlich dupliziert wurden, und den Verweis auf das alte falsche Projekt zu entfernen und einen Verweis auf das neue hinzuzufügen.

Auf jeden Fall scheint es, dass diese Nachrichten ein bisschen wie ein roter Hering sind. Ich würde Ihre Build-Ausgabe überprüfen und das erste Projekt finden, das nicht erstellt werden kann, und die Referenzen zu diesem Projekt sehr sorgfältig prüfen.


quelle
1
+1 für den Hinweis zur Ungenauigkeit dieser Nachrichten. Dies trat für mich auf, weil die Pfade zu Baugruppen, auf die in einer Lösung verwiesen wurde, unterbrochen waren. Das Lesen und Neukompilieren löste das Problem.
E. Rodriguez
6

Eine andere Sache, die überprüft werden muss, ist die Pfadlänge ... die auch dazu führt, dass Metadatendateien nicht gefunden werden und Kompilierungsfehler auftreten ... Ich habe meine Ordner nur in kürzere Pfade umbenannt und voilá, Klassen, die nicht erkannt wurden und schwarz blieben, wurden nur durch Umbenennen blau der Ordner.

Paul Ehmig
quelle
5

Für mich hatte ich ein Projekt, auf das in einem anderen Projekt verwiesen wurde. Es wurde nicht angezeigt, dass es in der Referenzliste im Fenster des Lösungs-Explorers fehlerhaft war, aber ich habe es trotzdem entfernt und erneut gelesen. Es baut sich jetzt gut!

Josh P.
quelle
Es ist in der Tat, ich habe alle Referenzen entfernt und sie wieder hinzugefügt.
3

Ich habe all diese Schritte in VS2012 durchlaufen, bin aber beim Erstellen der gesamten Lösung immer wieder auf dieses Problem gestoßen (die einzelnen Projekte wurden ohne Fehler erstellt).

Ich habe festgestellt, dass, wenn Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihre Lösung klicken und "Build Order" auswählen, die Reihenfolge angezeigt wird, in der VS Ihre Lösung neu erstellt. Es ist wahrscheinlich aus dem Ruder gelaufen.

Sie können die Erstellungsreihenfolge korrigieren, indem Sie auf die Registerkarte Abhängigkeiten klicken, die Projekte auswählen, die von anderen Projekten in der Lösung abhängen, und die Projekte überprüfen, von denen sie abhängen. Sobald Sie auf "OK" geklickt und die Lösung neu erstellt haben, sollten Sie bereit sein.

Dan
quelle
2

Die Art und Weise, wie ich dies in der Vergangenheit sowohl in VS2005 als auch gerade jetzt in VS2008 umgangen habe, besteht darin, sicherzustellen, dass alle Abhängigkeiten korrekt sind und die Verweise auf die Projekte verweisen, nicht auf die DLLs. Gehen Sie dann durch und erstellen Sie jedes Projekt manuell in der Reihenfolge der Abhängigkeit. Sobald der letzte Build erstellt ist, können Sie einen vollständigen Lösungsbuild ausführen.

Diese Antwort dient als zukünftige Referenz für andere, da ich weiß, dass die Frage älter als 15 Monate ist.

Prost

WestDiscGolf
quelle
2

Ich möchte ein paar Punkte ansprechen.

Wenn Sie sich unter MSBuild auf die Lösungsdatei als Build-Datei verlassen, stellen Sie sicher, dass Sie der Lösungsdatei Projekte in der Reihenfolge hinzufügen, in der sie erstellt werden sollen, dh basierend auf der gegenseitigen Abhängigkeitsreihenfolge der Projekte. Dies ist sehr wichtig, wenn Sie Projekte in der Lösung haben, von denen andere Projekte abhängen, die Referenzen jedoch als "Referenzen" und nicht als "Projektreferenzen" hinzugefügt wurden.

Sie sollten dies wie die Pest vermeiden, aber falls Sie dies tun müssen, stellen Sie zumindest sicher, dass die abhängigen Projekte früher in der Lösungsdatei angezeigt werden.

Beachten Sie, dass die Art und Weise, wie Visual Studio die Build-Reihenfolge generiert, nicht genau der Art und Weise entspricht, wie MSBuild dies tut. Dies liegt daran, dass MSBuild in erster Linie von der Projektdatei abhängt, um die Abhängigkeiten zu ermitteln, während Visual Studio sie auch in der Soltuion-Datei speichern kann. Daher kann es manchmal vorkommen, dass Visual Studio die Lösung perfekt erstellt, MSBuild dies jedoch nicht kann.

Ich hatte einige Fälle, in denen ich die Reihenfolge, in der die Projekte in der Lösungsdatei angezeigt werden, sowie die Reihenfolge, in der die Projekte im ProjectReferences-Element in einem Website-Projekt in der Lösungsdatei aufgelistet wurden, von Hand anpassen musste.

Ich hoffe die obigen Informationen helfen.

Umar Farooq Khawaja
quelle
2

Wenn Sie beispielsweise LinqtoSQL-Datenkontexte verwenden und die Datei .designer.cs fehlt, wird die Fehlermeldung Metadatendatei nicht gefunden.

Das Wiederherstellen der Datei designer.cs ist einfach.

Öffnen Sie die Datenbank mit der XML-Ansicht. Fügen Sie eine leere Zeile hinzu, entfernen Sie sie und speichern Sie sie. Das sollte Ihre designer.cs-Datei neu generieren.

Unter bestimmten Umständen funktioniert diese Problemumgehung nicht, wenn sich Code im Code-Behind Ihres Datenkontexts befindet. In diesem Fall nehmen Sie den Code aus dem Code dahinter und legen ihn in den Editor oder so. Führen Sie den Trick des Hinzufügens und Entfernens einer Leitung aus dem DC aus und speichern Sie sie. Setzen Sie nun den Code zurück und speichern Sie ihn.

Lithium6941
quelle
2

Ich habe jedes Mal ein ähnliches Problem, wenn ich das Projekt von SVN aktualisiere.
Eine weitere Lösung für ASP.NET:

  1. Schließen Sie die IDE.
  2. Löschen Sie die Dateien in C:\WINDOWS\microsoft.net\framework\v…\Temporary ASP.NET File\.
maksim09
quelle
1

Ich habe auch diesen Fehler festgestellt und die Ursache war, dass das Projekt auf sich selbst verweist. Ich habe keine Ahnung, wie es passiert ist, aber ich habe nur die Referenz und voila entfernt

JessiePilor
quelle
1

Stellen Sie zunächst sicher, dass das Kontrollkästchen "Build" für jedes Projekt unter Build -> Configuration Manager markiert ist.

Falls Sie bereits alle Projekte im Menü Erstellen -> Konfigurationsmanager ausgewählt haben und der Neustart des VS-Tricks auch bei Ihnen nicht funktioniert, müssen Sie die Referenz der Datei (en) (möglicherweise DLL oder CS) in finden Ihr Projekt und löschen Sie diese Referenzen manuell. Diese Datei (en) / Referenz (en) sollten mit einem gelben Symbol angezeigt werden. Der Fehler führt Sie definitiv dazu, welches Lösungsprojekt Sie prüfen sollten.

Der Grund für diesen Fehler ist, dass Sie Dateien im Windows Explorer manuell gelöscht haben und VS die Referenz nicht aktualisiert hat und versucht hat, die nicht mehr vorhandene Datei zu finden!

Haseeb Sd
quelle
1

In meinem Fall stellte ich fest, dass eine meiner Lösungen auf etwas verwies, das nicht auf dem Computer vorhanden war (VBIDE). Sobald ich die beleidigende Referenz entfernt habe, wurden die restlichen Projekte korrekt erstellt. Hoffe das hilft jemandem.

In einer anderen Situation habe ich Code von einem Projekt in ein anderes verschoben, und dieser Code bezog sich auf Json.net. Ich habe manuell einen Verweis auf Json.net hinzugefügt, aber dadurch ist das Problem aufgetreten. Ich habe es gelöst, indem ich Json.net über NuGet installiert habe, und das hat das Problem behoben. Hoffe das hilft jemandem.

Eddie Edwards
quelle
0

Das Gleiche ist passiert. Ich habe mehrere Lösungen, die auf dieselben Bibliotheksprojekte verweisen (.net 3.5). Ich bemerkte, dass dies passieren würde, wenn einer in Debug / Normal-Konfiguration erstellt wurde und ein anderer eine andere Compiler-Direktive (SQLite / lokaler Modus) verwendete. Lassen Sie einfach beide Projekte mit denselben Anweisungen erstellen, und es sollte Ihnen gut gehen.

Ryan
quelle
0

Wenn Sie der Lösung ein neues Projekt hinzugefügt haben, überprüfen Sie, ob dieses in der Erstellungsliste enthalten ist (siehe Konfigurationsmanager).

Richard S.
quelle
0

Ich blieb beim Speichern hängen, als ich eine von Matlab generierte DLL-Datei einfügen wollte. Und ich habe es schließlich gelöst, indem ich eine .ctf-Datei, was vermutlich ein Zertifikat bedeutet, und ein .net-Modul, das für den ordnungsgemäßen Betrieb der .dll benötigt wird, zusammen mit der .dll-Datei kopiert habe. Und das hat tatsächlich funktioniert! Mein Vorschlag ist also zu überprüfen, ob die DLL andere Dateien benötigt, um damit auszukommen.

Jingyu Lei
quelle
0

Windows 7 Ultimate 32 Visual Studio 2008 SQL Server v2005

Ich habe den gleichen Fehler erhalten. Und ich habe beschlossen, die Projektreferenzen zu entfernen und erneut hinzuzufügen. Ich konnte sie nicht wieder hinzufügen, da die Datenbankreferenz in jedem der referenzierten Projekte leer war.

Nachdem ich den Datenbankverweis auf die richtige Einstellung zurückgesetzt hatte, konnte ich ohne weitere Probleme erstellen. Außerdem war dies mein erster Versuch, dieses Projekt neu zu erstellen, nachdem ich den Quellcode in VSS verzweigt hatte.

Viel Glück

EJ Ralston
quelle
0

Ich hatte diesen Fehler, der durch eine meiner Projektabhängigkeiten verursacht wurde, bei der der Assemblyname im Projekt geändert wurde, die Referenz jedoch nicht aktualisiert wurde. Durch Aktualisieren der Referenz oder Zurückbenennen der Assembly wird das Problem behoben.

Darrell Cumming
quelle
0

EE - In meinem Fall lag das Problem in dem Projekt mit dem Entity-Framework. Öffnen Sie das Diagramm, ziehen Sie eine beliebige Tabelle um 2 cm :) und speichern Sie, der VS aktualisiert alle seine Links zur Datenbank. Erstellen Sie diese Projekte und erstellen Sie die Lösung , Buildssss.

Bishoy Hanna
quelle
0

Das einzige, was mich behoben hat (weil ich VS2010 nicht auf einem Administratorkonto ausführe), ist das manuelle Verschieben der Umgebungsvariablen VS120COMNTOOLS von Systemvariablen in Benutzervariablen.

Ryan
quelle
0

Das Löschen der Einträge aller Quelldateien, die nicht mehr in der Quellcodeverwaltung und im Dateisystem vorhanden sind, aus Ihrer .csproj-Datei hat bei mir funktioniert.


Detaillierter Ansatz:

Nun, meine folgende Antwort ist nicht nur die Zusammenfassung aller Lösungen, sondern bietet mehr als das.

Abschnitt 1):

Allgemeine Lösungen:

Ich hatte 4 Fehler dieser Art ('Metadatendatei konnte nicht gefunden werden') sowie 1 Fehler mit der Aufschrift 'Quelldatei konnte nicht geöffnet werden (' Nicht angegebener Fehler ')'.

Ich habe versucht, den Fehler "Metadatendatei konnte nicht gefunden werden" zu entfernen. Dafür habe ich viele Beiträge, Blogs usw. gelesen und festgestellt, dass diese Lösungen möglicherweise effektiv sind (hier zusammengefasst):

  1. Starten Sie VS neu und versuchen Sie es erneut.

  2. Gehen Sie zu 'Projektmappen-Explorer' . Klicken Sie mit der rechten Maustaste auf Lösung. Gehen Sie zu Eigenschaften . Gehen Sie zu 'Configuration Manager' . Überprüfen Sie, ob die Kontrollkästchen unter "Erstellen" aktiviert sind oder nicht. Wenn einige oder alle deaktiviert sind, überprüfen Sie sie und versuchen Sie erneut, sie zu erstellen.

  3. Wenn die oben genannten Lösungen nicht funktionieren, befolgen Sie die in Schritt 2 oben angegebene Reihenfolge. Deaktivieren Sie sie, aktivieren Sie sie erneut und versuchen Sie erneut, sie zu erstellen, auch wenn alle Kontrollkästchen aktiviert sind.

  4. Build Order- und Projektabhängigkeiten:

    Gehen Sie zu 'Projektmappen-Explorer' . Klicken Sie mit der rechten Maustaste auf Lösung. Gehen Sie zu 'Projektabhängigkeiten ...' . Sie sehen 2 Registerkarten: "Abhängigkeiten" und "Build-Reihenfolge" . Diese Erstellungsreihenfolge ist diejenige, in der die Lösung erstellt wird. Überprüfen Sie die Projektabhängigkeiten und die Erstellungsreihenfolge, um festzustellen, ob ein Projekt (z. B. 'Projekt1'), das von einem anderen abhängig ist (z. B. 'Projekt2'), versucht, vor diesem zu erstellen (Projekt2). Dies könnte die Ursache für den Fehler sein.

  5. Überprüfen Sie den Pfad der fehlenden DLL:

    Überprüfen Sie den Pfad der fehlenden DLL. Wenn der Pfad Leerzeichen oder ein anderes ungültiges Pfadzeichen enthält, entfernen Sie es und versuchen Sie es erneut.

    Wenn dies die Ursache ist, passen Sie die Erstellungsreihenfolge an.


Sektion 2):

Mein besonderer Fall:

Ich habe alle oben genannten Schritte mit verschiedenen Permutationen und Kombinationen versucht, wobei VS einige Male neu gestartet wurde. Aber es hat mir nicht geholfen.

Also habe ich beschlossen, andere Fehler zu beseitigen, auf die ich gestoßen bin ('Quelldatei konnte nicht geöffnet werden (' Nicht spezifizierter Fehler ')').

Ich bin auf einen Blog gestoßen: http://www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

Ich habe die in diesem Blog erwähnten Schritte ausprobiert und den Fehler 'Quelldatei konnte nicht geöffnet werden (' Nicht angegebener Fehler ')' behoben. Überraschenderweise habe ich auch andere Fehler beseitigt ('Metadatendatei konnte nicht gefunden werden') .


Sektion 3):

Moral der Geschichte:

Probieren Sie alle in Abschnitt (1) oben genannten Lösungen (und alle anderen Lösungen) aus, um den Fehler zu beheben. Wenn gemäß dem in Abschnitt (2) oben genannten Blog nichts funktioniert, löschen Sie die Einträge aller Quelldateien, die nicht mehr in der Quellcodeverwaltung und im Dateisystem vorhanden sind, aus Ihrer .csproj-Datei .


Vikram
quelle