c# - wurde - Metadaten-Datei '.dll' konnte nicht gefunden werden




metadatendatei wurde nicht gefunden c# (20)

Das Entfernen des packages Ordners mit NuGet im Lösungsordner funktionierte für mich. Nach dem Wiederaufbau funktionierte alles wieder. Überprüfen Sie die References in der Lösung und suchen Sie nach Referenzen mit einem gelben Dreieck.

Beispielbild:

Ich arbeite an einem WPF, C # 3.0-Projekt, und ich bekomme diesen Fehler:

Error 1 Metadata file
'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug
\BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools
\VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem

So referenziere ich meine usercontrols:

xmlns:vms="clr-namespace:VersionManagementSystem"
<vms:SignOffProjectListing Margin="5"/>

Es passiert nach jedem fehlgeschlagenen Build. Die einzige Möglichkeit, die Lösung zum Kompilieren zu bringen, besteht darin, alle meine Benutzersteuerelemente zu kommentieren und das Projekt neu zu erstellen, und dann entmarke ich die Benutzersteuerelemente und alles ist in Ordnung.

Ich habe Build-Aufträge und Abhängigkeiten Konfigurationen überprüft.

Wie Sie sehen können, scheint es den absoluten Pfad der DLL-Datei abgeschnitten zu haben ... Ich habe gelesen, dass es einen Fehler mit der Länge gibt. Ist das ein mögliches Problem?

Es ist sehr nervig und muss kommentieren, bauen und kommentieren, der Build wird extrem ermüdend.


Das Schließen und Wiedereröffnen von Visual Studio 2013 funktionierte für mich!


Dies kann immer noch in neueren Versionen von Visual Studio passieren (ich hatte es gerade in Visual Studio 2013 passiert):

Eine andere Sache, die versucht wird, ist, Visual Studio zu schließen und die .suo Datei zu löschen, die sich neben der .sln Datei befindet. (Es wird beim nächsten Save all erneut generiert (oder Visual Studio beenden)).

Ich hatte dieses Problem, wenn ich der Lösung auf einem anderen Rechner neue Projekte hinzufügte und dann die Revisionen .suo , aber die .suo Datei konnte auch in anderen Fällen beschädigt werden und zu sehr merkwürdigem Visual Studio-Verhalten führen von den Dingen, die ich immer versuche.

Beachten Sie, dass das Löschen der .suo Datei das Startprojekt (die Startprojekte) der Lösung zurücksetzt.

Mehr über die. .suo Datei ist here .


Es sieht nach solchen Fehlern aus, die darauf zurückzuführen sind, dass Visual Studio keine korrekten Informationen zu einem Fehler enthält. Der Entwickler versteht nicht einmal den Grund für den fehlgeschlagenen Build. Es kann ein Syntaxfehler oder etwas anderes sein. Im Allgemeinen sollten Sie, um solche Probleme zu lösen, die Wurzel des Problems finden (schauen Sie sich zum Beispiel das Build-Protokoll an).

In meinem Fall war das Problem tatsächlich, dass das Error List keine Fehler zeigte. Aber wirklich gab es Syntaxfehler; Ich habe diese Fehler im Output , und nachdem ich sie behoben hatte, war das Problem gelöst.


Für mich haben folgende Schritte funktioniert:

  • Suchen Sie das Projekt, das nicht erstellt wird
  • Entfernen Sie Referenzen zu Projekten innerhalb der Lösung.

Für mich ist es passiert, als ich ein neues Projekt zu einer Lösung hinzugefügt habe.

Visual Studio wählt automatisch .NET Framework 4.5.

Ich habe die Version 4.5.2 wie die anderen Bibliotheken geändert, und es hat funktioniert.


Ich fügte meiner Lösung ein neues Projekt hinzu und begann damit.

Der Grund? Das Projekt, das ich einbrachte, zielte auf ein anderes .NET-Framework ab (4.6 und meine anderen beiden waren 4.5.2).


Ich habe den gleichen Fehler "Metadatendatei '.dll' konnte nicht gefunden werden", und ich habe mehrere oben beschriebene Dinge versucht, aber der Grund für den Fehler war, dass ich Verweis DLL-Datei von Drittanbietern, die auf eine höhere .NET-Version ausgerichtet war dass mein Projekt auf .NET-Version abzielt. Die Lösung bestand also darin, den Zielrahmen meines Projekts zu ändern.


Ich habe dieses Problem in Visual Studio 2012 in einer Lösung, die viele Projekte hatte. Wenn Sie jedes Projekt in der Projektmappe manuell in derselben Reihenfolge wie die Projekt-Build-Reihenfolge (Rechtsklick und Neuerstellung im Projektmappen-Explorer) erstellen, wurde es für mich repariert.

Irgendwann kam ich zu einem, der mir einen Kompilierfehler gab. Ich habe den Fehler behoben und die Lösung würde danach korrekt erstellt.


Ich habe mir auch bei diesem Problem die Haare ausgezogen, aber nachdem ich die vorherigen Antworten ausprobiert hatte, war das einzige, was mir funktionierte, jedes Projekt in meiner Lösung 1 zu 1 zu öffnen und sie einzeln zu bauen.

Dann habe ich Visual Studio 2013 geschlossen, meine Lösung wieder geöffnet und es kompiliert.

Es ist seltsam, denn wenn ich jedes Projekt in meinem Projektmappen-Explorer angeklickt habe und versucht habe, sie so zu erstellen, sind alle fehlgeschlagen. Ich musste sie alleine in ihren eigenen Lösungen öffnen.


Ich hatte den gleichen Fehler. Es verbirgt sich wie im folgenden Pfad. Der Pfad, den ich für die DLL-Datei angegeben habe, ist wie "D: \ Assemblies Folder \ Assembly1.dll".

Aber der ursprüngliche Pfad, auf den die Assembly verwiesen hat, war "D: \ Assemblies% 20Folder \ Assembly1.dll".

Aufgrund dieser Änderung des Pfadnamens konnte die Assembly nicht von ihrem ursprünglichen Pfad abgerufen werden und verursacht daher den Fehler "Metadaten nicht gefunden".

Die Lösung befindet sich in Stapelüberlauf Frage Wie ersetze ich alle Leerzeichen mit% 20 in C #? .


Ich hatte diesen Fehler, als ich versuchte, eine Webanwendung zu veröffentlichen. Es stellte sich heraus, dass eine der Klasseneigenschaften eingepackt wurde

#if DEBUG
    public int SomeProperty { get; set; }
#endif

aber die Nutzung der Immobilie war nicht. Die Veröffentlichung wurde offensichtlich in der Release-Konfiguration ohne das DEBUG Symbol durchgeführt.


Ich verwende Visual Studio 2013.

Es scheint, dass die Buildabhängigkeiten falsch waren. Durch das Löschen der * .suo-Dateien wurden die Probleme behoben, die ich hatte.


In meinem Fall habe ich mein installiertes Verzeichnis in falscher Weise.

Wenn Ihr Lösungspfad etwas wie "Mein Projekt% 2c Sehr beliebt% 2c Unit Testing% 2c Software und Hardware.zip" ist, kann die Metadaten-Datei nicht aufgelöst werden, vielleicht sollten wir einige ungültige Wörter wie% 2c verhindern.

Das Umbenennen des Pfades in einen normalen Namen hat mein Problem gelöst.


In meinem Fall wurde das Problem durch einen einfachen Buildfehler verursacht,

Fehler CS0067: Das Ereignis 'XYZ' wird nie verwendet

das aus irgendeinem Grund nicht in dem Fehlerfenster angezeigt wurde.

Aus diesem Grund schien das Buildsystem von Visual Studio den Fehler zu übersehen und versuchte, abhängige Projekte zu erstellen, was wiederum mit der lästigen Metadaten-Nachricht fehlschlug.

Die Empfehlung ist - so dumm es klingen mag:

Schauen Sie sich zuerst Ihr Ausgabefenster an !

Es dauerte eine halbe Stunde, bis diese Idee mich traf ...


In meinem Fall wurde es durch eine .NET Framework-Versionskonflikt verursacht.

Ein Projekt war 3.5 und das andere referenzierende Projekt 4.6.1.


In meinem persönlichen Fall hatte ich es versäumt, einen Verweis auf eines der Projekte in der Lösung hinzuzufügen, und das war es, was den Fehler für mich in die Höhe trieb.


Meine Instanz des Problems wurde von einem gemeinsamen Projekt verursacht, das einen doppelten Klassennamen (unter einem anderen Dateinamen) enthielt. Es ist seltsam, dass Visual Studio dies nicht erkennen konnte und stattdessen den Build-Prozess in die Luft jagte.


Nun, nichts in den vorherigen Antworten funktionierte für mich, so dass ich darüber nachdachte, warum ich klicke und hoffe, dass wir als Entwickler wirklich versuchen sollten zu verstehen, was hier vor sich geht.

Es schien mir offensichtlich, dass diese falsche Metadaten-Dateireferenz irgendwo gespeichert werden muss.

Eine schnelle Suche in der .csproj-Datei zeigte die Schuldgefühle. Ich hatte einen Abschnitt namens <itemGroup>, der an den alten falschen Dateipfad zu hängen schien.

<ItemGroup>
    <ProjectReference Include="..\..\..\MySiteOld\MySite.Entities\MySite.Entities.csproj">
        <Project>{5b0a347e-cd9a-4746-a3b6-99d6d010a6c2}</Project>
        <Name>Beeyp.Entities</Name>
    </ProjectReference>
...

Also eine einfache Lösung:

  1. Sichern Sie Ihre .csproj-Datei.
  2. Suchen Sie die falschen Pfade in der .csproj-Datei und benennen Sie sie entsprechend um.

Bitte stellen Sie sicher, dass Sie Ihre alte .csproj sichern, bevor Sie fiedeln .






c#-3.0