"Die Datei oder Baugruppe 'XXX.YYY' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die angegebene Datei wurde vom System nicht gefunden."

8

Ich habe eine Visual Studio-Lösung mit einer Reihe von Projekten (Klassenbibliotheken und eine Webanwendung).

Ich habe ein Refractoring durchgeführt, bei dem Dateien zwischen Projekten verschoben, neue Projekte erstellt, gelöschte nicht verwendet und einige existierende Projekte umbenannt wurden.

Die Lösung wird ohne Probleme erstellt, aber beim Ausführen der Webanwendung tritt die folgende Ausnahme auf:

"Die Datei oder Baugruppe 'XXX.YYY' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Das System kann die angegebene Datei nicht finden."

Das Projekt namens XXX.YYY, das im Refractoring gelöscht wurde, hat eine DLL namens XXX.YYY ausgegeben. Dies wird jedoch nirgendwo in der Anwendung verwendet. Ich löschte die Web-Anwendungen Obj-Verzeichnis und Bin-Ordner und Wiederaufbau, aber es tritt immer noch auf.

Hat jemand irgendwelche Ideen, wenn dies auftreten könnte, irgendwelche Tipps ??

UPDATE:

Aktualisiere mein Problem. Ich nahm den Code-Platz zu einem anderen Computer und führte es von dort aus und es baute und lief erfolgreich, ohne dass dieses Problem auftrat. Das lässt mich glauben, dass das Problem eher bei meinem PC als bei der Code-Basis liegt. Vielleicht ist etwas auf meinem PC zwischengespeichert. Ich habe meine temporären Dateien unter "C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporäre ASP.NET-Dateien" gelöscht, aber kein Glück.

Also alles andere, was gecacht werden könnte oder irgendeinen anderen Grund dafür, dass es auf meinem PC passiert.

WEITERES UPDATE

Ein weiteres Update dazu. Ich habe den gleichen Code auf anderen Entwicklern ausgeführt und er hat kein Problem damit. Also muss definitiv etwas an meiner Maschine sein! Der einzige Unterschied auf unserem Computer ist, dass ich IIS7 mit dem App-Pool der App im klassischen Modus ausführen. Der andere Entwickler führt IIS6 aus.

2 neue Stücke zu Informationen. Zuerst muss ich in meinen httpmodules in meiner web.config ein benutzerdefiniertes HTTP-Modul entfernen, bevor ich es hinzufüge. Der andere Entwickler muss das nicht tun. Zweitens konnte ich das Problem "Datei oder Assembly 'XXX.YYY' oder eines seiner Abhängigkeiten nicht laden" über einen "Hack" beheben, der nur eine kurzfristige Lösung darstellt, indem ich eine Klassenbibliothek in meinem Projekt namens XXX erstelle .YYY und einschließlich der gesuchten Klassen, die alle benutzerdefinierte Steuerelemente sind, dh. erben von System.Web.UI.WebControls.WebControl.

Irgendwelche weiteren Gedanken ....

    
amateur 01.01.2011, 23:05
quelle

8 Antworten

0

Gute Neuigkeiten, ich habe das Problem gelöst !!! Ich musste meine .net Laufzeitumgebung neu installieren. Ich habe auch Websites von IIS gelöscht und die Website erneut veröffentlicht. Als ich es ausführte, trat das Problem nicht auf und Site lief.

Ein großes Dankeschön an alle für ihre Hilfe und Unterstützung, sehr geschätzt. Alle Ratschläge und Hilfe haben mich in die Richtung gelenkt, das zu lösen!

    
amateur 08.01.2011, 15:22
quelle
5

Es gibt zwei mögliche Gründe.

1) Wenn Sie Ihre Webanwendung ausführen, verwenden Sie die alten Assemblys immer noch irgendwo auf Ihren Computern. Ihre alten Assemblys verwiesen auf die alte Assembly "XXX.YYY".

2) Die letzte von Ihnen erstellte Binärdatei verweist immer noch auf die alte Assembly "XXX.YYY".

Um herauszufinden, welche Assemblies Ihre Webanwendung verwendet, können Sie, wenn Sie einen Debugger ausführen, diesen einfach in den Ausgabefenstern finden. Es sollten die ersten Zeilen der Ausgabe sein. Eine andere Möglichkeit, dies herauszufinden, besteht darin, die Modulfenster in der VS.NET IDE während des Debuggens zu öffnen.

Wenn Sie es aus einigen Gründen nicht debuggen können oder Probleme beim Anhängen eines Debuggers haben, können Sie auch fuslogvw . Es gibt Ihnen die genauen Positionen aller erfolgreich geladenen Assemblys sowie der Assemblys, die nicht geladen werden konnten. Bitte stellen Sie sicher, dass Sie das Fuslogvw als Administrator in Windows 7 ausführen.

Nachdem Sie herausgefunden haben, welche Assemblys Ihre Webanwendung erfolgreich geladen hat, können Sie ildasm für diese Assemblys ausführen, um zu sehen, auf welche Assemblies sie verweisen. Sie müssen sie leider eins nach dem anderen überprüfen.

Ich vermute, dass einige Ihrer erfolgreich geladenen Assemblys tatsächlich von irgendwo im ASP.NET-Cache oder GAC kommen.

    
Harvey Kwok 02.01.2011 18:28
quelle
1

überprüfen Sie einfach die Projekte Build-Konfiguration .. Wenn es eine 64-Bit kompilierte DLL auf Ihre Referenzen und Ihr Hauptprojekt ist 32 Bit (oder eine CPU und Ihre Maschine ist 32 Bit) oder umgekehrt Sie werden diesen Fehler erhalten

    
Tolgahan Albayrak 01.01.2011 23:17
quelle
1

Verwenden Sie den Dependency Walker (abhängig) von all Ihren EXEs und DLLs, um zu sehen, welcher die fehlende Abhängigkeit hat. Sie sollten abhängig von dem Arbeitsverzeichnis Ihres Projekts für beste Ergebnisse ausgeführt werden.

Sobald Sie wissen, welche EXE / DLL der Übeltäter ist, gehen Sie in die Einstellungen für dieses Projekt und sehen Sie, ob die beschwerte Abhängigkeit dort erwähnt wird.

EDIT: Eine andere Sache ist mir vor ein paar Minuten aufgefallen ... Wenn eine Ihrer Abhängigkeiten "blockiert" ist, weil sie von einigen MS-Tardware als heruntergeladen markiert wurden (wenn Sie DL mit Inet-Explorer zum Beispiel), die das Laden von ausführbarem Code verhindern kann. Sehen Sie sich die Eigenschaften Ihrer ausführbaren Dateien (DLL / EXE) mit Windows Explorer an und sehen Sie, ob sie auf der ersten Seite eine Schaltfläche zum Entsperren haben. Wenn ja, klicke auf diese Schaltfläche. Das hat einige Zeit gedauert, um eine Weile zurück zu finden, hoffentlich wird es helfen.

    
JimR 01.01.2011 23:18
quelle
1

Aktivieren Sie die Diagnoseprotokollierung für die Build-Ausgabe (TOols - & gt; Optionen - & gt; Erstellen und Ausführen - & gt; Ausgabeprotokoll-Ausführlichkeit - & gt; Diagnose) und Erstellen Sie die Lösung und sehen Sie, von wo Visual Studio die dll (somedll.dll Version xxx.yy). Führen Sie jetzt die Anwendung aus und sehen Sie, wo die Laufzeit versucht, die DLL aufzulösen. (Windbg ist eine Option).

    
Soundararajan 07.12.2011 18:28
quelle
0

Suche nach dem Text "XXX.YYY" und lösche alle Vorkommen. Vielleicht haben Sie in einer web.config-Datei etwas ausgelassen.

Zusätzlich können Sie die * .csproj Dateien überprüfen, wenn die Lösungssuche nichts findet. Sie sind im Grunde Textdateien, daher sollte es kein Problem sein, Referenzen zu entfernen.

    
dzendras 01.01.2011 23:48
quelle
0

Sie verpassen einfach eine Abhängigkeit. Es ist wahrscheinlich eine Situation wie Projekt A hat einen Verweis auf Projekt B, die einen Verweis auf Projekt C hat. Ihr Ausgabeverzeichnis fehlt die DLL für Projekt C.

    
mikesigs 02.01.2011 00:15
quelle
0

Gehe zu References in Solution Explorer in Visual Studio . Wählen Sie die Baugruppe aus, die beschwert wird. Wählen Sie es aus und gehen Sie zur Menüoption View und wählen Sie Property Window unten. Während die Assembly ausgewählt ist, zeigen Sie ihre Eigenschaften in den Eigenschaftenfenstern an und suchen Sie nach Copy Local value. Wenn der Wert auf False festgelegt ist, setzen Sie ihn auf True . Erstellen Sie die Lösung und veröffentlichen Sie sie. Es sollte das Problem erfolgreich lösen.

    
Jogi 25.08.2015 08:19
quelle