VS 2017-Metadatendatei '.dll wurde nicht gefunden

80

Ich weiß, dass es eine andere Frage gibt, die genau das gleiche Problem hat, aber ich habe all diese Antworten durchgearbeitet, und keine hat mir geholfen. :( ( Dies war die Frage. )

Ich habe gerade ein neues ASP.NET MVC-Projekt erstellt und einige DLLs in die Lösung aufgenommen. Wenn ich jetzt versuche, das Projekt zu erstellen, erhalte ich die unten gezeigte Fehlermeldung für 3 der 5 Bibliotheken.

Error   CS0006  Metadata file 'C:\Users\...\source\Database\bin\Debug\DataAccessLayer.dll' could not be found   Logic   C:\Users\...\source\Logic\CSC   1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\Logic\bin\Debug\Logic.dll' could not be found    PTS2-MVC    C:\Users\...\source\PTS2-MVC\CSC    1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\PTS2-MVC\bin\PTS2-MVC.dll' could not be found    PTS2-MVC.Tests  C:\Users\...\source\PTS2-MVC.Tests\CSC  1   Active

Wenn ich in den Ordner bin \ debug dieser DLL gehe, sehe ich, dass sie leer ist und die andere DLL, in der ich keine Fehlermeldung erhalte, nicht leer ist. Aber ich weiß nicht, wie ich das beheben soll oder was ich getan habe, um dies zu erreichen.

Die häufigste Antwort auf die gehen Eigenschaften der Lösung und gehen Sie zu Konfiguration und deaktivieren -> Anwendung -> Kontrolle und Anwendung wieder, aber das hat nicht funktioniert

Svenmarim
quelle
Nur eine Vermutung, aber es scheint, als hätte VS diese beseitigt. Ich bin mir nicht sicher, was diese DLLs sind oder woher sie stammen, aber wenn Sie derjenige sind, der sie erstellt hat, würde ich sicherstellen, welche Lösung sie auch enthalten. Wenn diese Ordner von dem stammen, auf dem Ihre aktuelle Lösung erstellt wird, werden sie nicht gefunden, sobald Sie Ihre Lösung erneut bereinigen.
TheNoob
Reinigen ^ neu erstellen || Starten Sie Ihr Bild neu, überprüfen Sie erneut
Asif Raza
@AsifRaza Ich habe das schon so oft gemacht, aber mit mir nachgedacht :)
Svenmarim
1
@TheNoob Du sagst also, ich muss versuchen, meine Lösung zu reinigen und sie dann zu erstellen? weil ich das schon versucht habe
Svenmarim
Löschen Sie den gesamten Ordner aus dem Bin und erstellen Sie ihn dann neu. ^ check
Asif Raza

Antworten:

114

Das Problem war, dass ich einige andere normale Fehlermeldungen in meinem Projekt hatte, und anscheinend waren alle DLLs erfolgreich, nachdem ich diese behoben und mein Projekt WIEDER bereinigt und erstellt hatte.

Stellen Sie sicher, dass Ihr Projekt keine weiteren Fehlermeldungen enthält, und beheben Sie diese zuerst, wenn Sie dies tun!

Svenmarim
quelle
5
Ich hatte tatsächlich das gleiche Problem, aber es wurden keine anderen Fehler angezeigt, nur der 1-Fehler bezüglich der fehlenden DLL. Aber irgendwann (ohne dass ich Code änderte) tauchte plötzlich ein Syntaxfehler auf, der vorher nicht auftauchte. Nachdem ich diesen Fehler behoben hatte, habe ich, wie Sie sagten, gereinigt, neu aufgebaut und alles hat funktioniert.
27.
22
Gleiches Problem hier. Es scheint einen Fehler im Fenster "Fehlerliste" zu geben, bei dem manchmal keine Fehler angezeigt werden (und manchmal werden Fehler, die behoben wurden, trotz einer Bereinigung / Neuerstellung weiterhin angezeigt). Das Ausgabefenster ist zuverlässiger. Überprüfen Sie es dort, wenn Sie auf dieses Problem stoßen.
Santosh
1
Ich stellte fest, dass ich Warnungen in meiner Registerkarte "Fehlerliste" in Visual Studio aktivieren musste. In den Warnungen sah ich, dass eine referenzierte DLL nicht aufgelöst werden konnte. Ich musste die vorhandene Referenz entfernen und eine neue im richtigen Verzeichnis hinzufügen. Jetzt ist alles in Ordnung.
user1431072
Siehe meinen Kommentar oben, aber im Grunde das Gleiche, außer dass ein Fehler in VS die Anzeige der Fehler verhinderte, bis ich die Build-Optionen auf den Eigenschaftenseiten der Lösung deaktiviert / aktiviert habe.
beraubt
1
Dies ist die einzige Antwort, die mir wirklich geholfen hat. Hervorragend! Vielen Dank!
28sɹǝʌ ǝɔıʌ
34

Schritte zur Behebung dieses Fehlers: Die MetaData-Datei .dll wurde nicht gefunden.

  1. Reinigen Sie alle Projekte.

  2. Entladen Sie alle Projekte.

  3. Laden Sie alle Projekte neu.

  4. Lösung neu erstellen.

Dann Problem gelöst.

rjay dadula
quelle
Das hat meinen Fall wirklich behoben.
Vu Nguyen
Entladen und Nachladen waren der Schlüssel für mich. Ich habe lange Zeit mit diesem Thema verbracht, bis ich das getan habe!
Ikariw
15

In meinem Fall ist ein Fehler aufgetreten, der jedoch von VS nicht ordnungsgemäß analysiert und im Fenster "Fehlerliste" angezeigt wurde. Um es zu finden, sehen Sie sich häufig die alte "Ausgabe" aus dem Build-Fenster an und analysieren die Nachrichten von oben nach unten und beheben den eigentlichen Fehler. M $, bitte reparieren! Dies ist eine enorme Zeitverschwendung für die kollektiven Entwickler der Welt.

ebol2000
quelle
1
Dies löste das Problem für mich. Versuchte alle anderen Lösungen, aber das Ausgabefenster zeigte mir, dass mein Projekt gegen netframework 4.7.2 erstellt wurde, das höher war als das angestrebte Framework netframework 4.6. Musste nur die .csjproj bearbeiten, um auf 4.6 zu zeigen.
Calum Mullen
10

Überprüfen Sie den Namen Ihres Projektordners. In meinem Fall wurde mein Projektordner mit Leerzeichen benannt. Als ich das Projekt mit git bash von Team Foundation Server geklont habe, wurden die Leerzeichen im Ordnernamen in "% 20" konvertiert. Das Zurücksetzen in Leerzeichen hat das Problem für mich behoben.

Roscoelee
quelle
2
Das gleiche Problem wegen STUPID VSTS.
Arsen Khachaturyan
2
Dies war der genaue Grund für den obigen Fehler. Danke für den Tipp. es hat funktioniert
user3785553
8

Ich hatte dieses Problem mit einer Lösung, die mehrere Projekte enthielt.

Es kam vom Duplizieren einer .csproj und dem Hinzufügen der Kopie zur Lösung. Eine .csproj- Datei enthält a<ProjectGuid> Element. Ich habe die GUID des kopierten Projekts auf eine neue gesetzt.

Update: Welche GUID Sie verwenden, spielt keine Rolle, sie muss sich nur von der GUID des anderen Projekts unterscheiden. Sie können eine neue GUID in Visual Studio erstellen: Tools -> Create GUIDund den Teil zwischen die geschweiften Klammern kopieren, d {...}. H. Verwenden Sie dies als neuen Wert für die<ProjectGuid> Element.

Ich habe auch die folgenden Schritte ausgeführt (nicht unbedingt erforderlich, aber sie tun nicht weh):

  1. Schließen Sie die Lösung
  2. Bin-Ordner löschen
  3. Löschen Sie alle obj-Ordner
  4. Lösung öffnen und bauen
j00hi
quelle
5

Ich behebe dieses Problem mit den folgenden Schritten:

  1. Saubere Lösung
  2. Schließen Sie Visual Studio
  3. Löschen von / bin aus dem Projektverzeichnis
  4. Starten Sie Visual Studio neu
  5. Lösung neu erstellen
Lucas Prestes
quelle
3

Ich habe das gleiche Problem, das Problem war, dass der Lösungspfad Leerzeichen im Namen hat und aus irgendeinem Grund das Paket nicht auflöst ... lade mein Repository erneut herunter und benenne die Lösung einfach ohne Leerzeichen im Namen um.

z.B:

/Repo/Project Name/src

sollte sein

/Repo/ProjectName/src
D__
quelle
Gleiches hier, aber ich hatte %20im Ordner den Namen.
Wojtek Turowicz
3

Für mich hat das Putzen und Bauen nicht funktioniert. Das Entladen des Projekts hat nicht funktioniert. Das Neustarten von Visual Studio oder sogar des PCs hat nicht funktioniert. Das hat funktioniert:

Gehen Sie zu jedem der Projekte, die den Fehler auslösen, und löschen Sie unter Referenzen den Verweis auf das problematische Projekt und fügen Sie ihn erneut hinzu. Das löst das Problem.

Das Problem scheint damit zu tun zu haben, dass ein Projekt verschoben wird (z. B. in einen Ordner verschieben) und dann ein anderes Projekt, das darauf verweist, einen falschen Pfad hat und es nicht finden kann.

David Perez
quelle
Ich habe die Verzeichnisse meiner Projekte geändert, was zu Problemen mit DLLs geführt hat, die nicht mit "Alle neu erstellen" erstellt wurden. Diese Antwort behebt mein Problem.
Alain Elemia
3

Ich hatte das gleiche Problem, auch wenn nach "Lösung neu erstellen" keine anderen Fehler in der Ansicht "Fehlerliste" angezeigt wurden. In der Ansicht "Ausgabe" habe ich jedoch den Fehler gesehen, der hinter dem Problem steckt:

Die primäre Referenz "C: ... \ myproj.dll" konnte nicht aufgelöst werden, da sie für das Framework ".NETFramework, Version = v4.6.1" erstellt wurde. Dies ist eine höhere Version als das derzeit angestrebte Framework ".NETFramework, Version = v4.5".

Nachdem ich dies korrigiert hatte, wurde das Problem behoben.

Ian
quelle
2

Eine andere Sache, die Sie überprüfen sollten, ist das Ziel-Framework aller Projekte, auf die verwiesen wird, um sicherzustellen, dass das aufrufende Projekt dieselbe oder eine spätere Version des Frameworks verwendet.

Ich hatte dieses Problem, habe alle zuvor vorgeschlagenen Antworten ausprobiert und dann ahnungslos die Frameworks überprüft. Eines der Projekte, auf die verwiesen wurde, zielte auf 4.6.1 ab, wenn das aufrufende Projekt nur 4.5.2 war.

rauben
quelle
Das selbe hier.
Anthony Queen
2

Das Ausführen dieses Befehls in Bash zum Löschen aller für mich funktionierenden Bins

$ find . -iname "bin" -o -iname "obj" | xargs rm -rf

Ich kann jedoch nicht garantieren, dass es für andere funktioniert

Beachten Sie auch, dass alle Bin-Dateien gelöscht werden. Sie müssen also alle Projekte neu erstellen. Es ist natürlich am besten, vor der Verwendung in das entsprechende Verzeichnis zu wechseln.

Yair Halberstadt
quelle
2

Überprüfen Sie, ob alle Projekte geladen sind. In meinem Fall wurde eines der Projekte entladen und durch erneutes Laden des Projekts werden die Fehler behoben.

Maryam
quelle
2

In meinem Fall musste ich die .csproj-Datei öffnen und die Referenz wie folgt von Hand hinzufügen (Microsoft.Extensions.Identity.Stores.dll fehlte):

<Reference Include="Microsoft.Extensions.Identity.Stores">
  <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.identity.stores\2.0.1\lib\netstandard2.0\Microsoft.Extensions.Identity.Stores.dll</HintPath>
</Reference>
toutecrimson
quelle
2

Schließen Sie Visual Studio, suchen Sie die .suo-Datei der Lösung, löschen Sie sie und öffnen Sie Visual Studio erneut.

Graham Laight
quelle
2

Was hat bei mir funktioniert:

Paketmanager-Konsole (Visual Studio 2019 Comunity):

Install-Package NuGet.CommandLine
nuget locals all -clear

Lösung neu erstellen.

s3c
quelle
1

In meinem Fall hatte ich den gleichen Fehler. Eine meiner Projektlösungen bestand darin, eine Baugruppe von einem anderen NuGet-Standort zu verweisen. Ich habe es nur in den richtigen Speicherort geändert, um diesen Fehler zu beheben und neu zu erstellen. und wow, das Projekt wird erfolgreich erstellt und alle anderen Fehler sind verschwunden.

Mukesh Kumar
quelle
1

Das Bereinigen meiner Lösung verursachte dieses Problem mit Visual Studio 2017. Das Entladen / Neuladen von Projekten oder mehr Bereinigung machte keinen Unterschied. Das einzige, was funktionierte, war das Schließen und Neustarten von Visual Studio.

John81
quelle
1

Ich hatte den gleichen Fehler. In meinem Fall hatte ich eine Bibliothek erstellt (nennen wir sie commsLibrary), die auf andere Bibliotheken verwies, indem sie als Projekte in meine Lösung aufgenommen wurden. Später, als ich ein Projekt baute und meins hinzufügte commsLibrary hinzufügte , konnte ich beim Erstellen der Metadatendatei keinen Fehler finden. Also habe ich die Bibliotheken hinzugefügt, auf die meine Kommunikationsbibliothek verwiesen hat, und konnte sie dann erstellen.

Joseph Mawer
quelle
1

Nach so vielen Problemen ist hier die Lösung, die ich gefunden habe.

  1. Öffnen Sie Ihren Projektordner.
  2. find Your_Project_Name.csproj [Visual C # -Projektdatei (.csproj)]
  3. Öffnen Sie diese Datei in einem beliebigen Texteditor und suchen Sie Ihre fehlende Datei ItemGroup.

    <ItemGroup> <None Include="..." /> </ItemGroup>

  4. Entfernen Sie diese ItemGroup und öffnen Sie Ihr Projekt erneut und erstellen Sie es

  5. Wenn diese Referenz für Sie wichtig ist, fügen Sie sie erneut hinzu.
Abhishek Shingadiya
quelle
1

Ich hatte das gleiche Problem und habe versucht, Lösungen aus der Metadatendatei '.dll' nicht zu finden

aber keines davon funktionierte.

Nach Versuch und Irrtum habe ich es behoben, indem ich das Projekt entladen und neu geladen habe. Dabei habe ich die Konfigurationsdatei zurückgesetzt und das Problem behoben.

Amad Malik
quelle
1

Ich habe 10 Projekte aus 25 Projekten in Lösung einzeln erstellt, basierend auf Abhängigkeiten. Dann bauen Sie die Lösung. Es wurde für mich behoben

Siva Sankaran
quelle
Dies war meine Lösung
Lasitha
0

Ich hatte das gleiche Problem. Mein Problem war, dass jemand anderes im Team einen Klassenordner verschoben hat und das Projekt danach gesucht hat.

Für mich gab es 44 Fehler; 43 endete mit .dll (Suche nach einer Abhängigkeit) und der erste in der Fehlerliste endete mit .cs (Suche nach der tatsächlichen Klasse). Ich habe versucht, sauber zu bauen und zu reinigen, zu entladen, neu zu laden, zu bauen, aber nichts funktioniert. Am Ende habe ich die Klasse im Projekt gefunden und sie einfach gelöscht, da sie sowieso als nicht verfügbar angezeigt wurde, gefolgt von einem Clean-Build.

Das hat den Trick für mich getan! Hoffe das hilft.

Burke
quelle
0

Ich hatte 2 Dateien (und 2 Klassen) im selben Projekt mit demselben Namen.

JohnB
quelle
0

In meinem Fall habe ich eine Datei direkt aus dem Team Explorer-Git-Menü gelöscht, was dieses Problem verursacht hat. Als ich den Lösungs-Explorer überprüfte, wurde die gelöschte Datei immer noch als nicht referenzierte Datei angezeigt. Als ich diese Datei aus dem Solution Explorer entfernte, konnte ich das Projekt erfolgreich erstellen.

p4ulinux
quelle
0

Für mich hat funktioniert:

Deinstallieren Sie das referenzierte Nuget-Paket mit dem Fehler und installieren Sie es erneut.

Andrew
quelle
0

In meinem Fall habe ich die Tests ausgeführt und den Fehler CS0006 erhalten. Es stellte sich heraus, dass ich Tests im Release-Modus durchführe. Der Wechsel in den Debug-Modus hat diesen Fehler behoben.

izimiky
quelle
0

Dieses Problem tritt auf, wenn Sie Ihre Lösung umbenannt haben und das .net-Framework die alte Lösung nicht finden kann.

Um dies zu beheben, müssen Sie den alten Namen der Lösung und alle Abhängigkeiten davon suchen und durch den neuen Namen ersetzen. Wenn Sie die physische Datei über den Datei-Explorer durchsuchen müssen, tun Sie dies.

Die Dateien, die normalerweise betroffen sind AssemblyInfo.cs, sind .slnein Properties > Application > AssemblyName und ein Standard-Namespace. Stellen Sie sicher, dass Sie sie mit dem neuen Namen aktualisieren.

Öffnen Sie den Datei-Explorer. Wenn der Ordner mit dem alten Namen noch vorhanden ist, müssen Sie ihn löschen. Reinigen und erstellen Sie dann die Lösung, bis der Fehler behoben ist. (Bei Bedarf bereinigen und erstellen Sie das Projekt nacheinander, insbesondere das betroffene Projekt.)

John Carlo Diocadiz
quelle
0

In meinem Fall war das Problem, dass ich auf ein Projekt verwies, in dem ich alle .csDateien auskommentierte.

Beispielsweise verweist ProjectApp auf ProjectUtility. In ProjectUtility hatte ich nur 1 .csDatei. Ich habe es nicht mehr benutzt, also habe ich die ganze Datei auskommentiert. In ProjectApp habe ich keinen Code von ProjectUtility aufgerufen, aber using ProjectUtility;in einer der ProjectApp- .csDateien. Der einzige Fehler, den ich vom Compiler bekam, war der CS0006 Fehler.

Ich habe die .csDatei in ProjectUtility auskommentiert und der Fehler ist verschwunden. Ich bin mir also nicht sicher, ob der Compiler ohne Code in einem Projekt eine ungültige Assembly erstellt oder die DLL überhaupt nicht generiert. Die Lösung für mich bestand darin, nur den Verweis auf ProjectUtility zu entfernen, anstatt den gesamten Code zu kommentieren.

Falls Sie sich gefragt haben, warum ich den gesamten Code aus dem referenzierten Projekt kommentiert habe, anstatt die Referenz zu entfernen, habe ich dies getan, weil ich etwas getestet habe und die ProjectApp.csprojDatei nicht ändern wollte .

iheartcsharp
quelle