“Konnte nicht geladen, Datei oder assembly " XXX.YYY' oder eine Ihrer Abhängigkeiten. Das system kann nicht die angegebene Datei gefunden werden."
Habe ich eine .net visual studio-Lösung mit einer Reihe von Projekten (Klassen-Bibliotheken und web-Applikation).
Habe ich einige refractoring die verschobenen Dateien zwischen Projekten, erstellt neue Projekte gelöscht, die nicht verwendet wird und der Umbenennung einiger bestehender Projekte.
Die Lösung baut, ohne ein Problem, aber bei mir läuft die web-Anwendung die folgende Ausnahme tritt auf:
"Konnte nicht geladen, Datei oder assembly" XXX.YYY' oder eine Ihrer Abhängigkeiten. Das system kann nicht die angegebene Datei gefunden werden."
Projekt namens XXX.YYY, die gelöscht wurde, in der refractoring ausgegeben wird eine dll namens XXX.YYY. Aber das ist nicht überall in der Anwendung. Ich löschte die web-Anwendungen obj-Verzeichnis und den Ordner bin und neu erstellen, aber es immer noch Auftritt.
Jemand irgendwelche Ideen, wenn diese auftreten, irgendwelche Tipps??
UPDATE:
Update auf mein Problem. Ich habe den code platzieren Sie auf einem anderen computer, und es lief von dort und es gebaut, und lief erfolgreich, ohne dass dieses Problem Auftritt. Also das macht mich denke, das Problem ist mit meinem PC anstatt der code-Basis. Vielleicht gibt es etwas zwischengespeichert auf meinem PC. Hab ich lösche meine temp-Dateien im "C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Dateien", aber kein Glück.
Also nichts anderes, das könnte sein-Cache oder aus einem anderen Grund, Sie treten auf meinem PC.
WEITERES UPDATE
Weiteres update auf dieser. Ich lief den gleichen code an andere Entwickler-Maschine und er nicht ein Problem haben, das es läuft. Also muss definitiv etwas sein, was auf meinem Rechner! Die nur andere an unserer Maschine ist, dass ich bin läuft IIS7 mit der app app-pool im classic-Modus. Der andere Entwickler ist, läuft IIS6.
2 neue Stücke auf Informationen. Erstens in meiner httpmodules in meinem web.config habe ich zum entfernen eines benutzerdefinierten http-Moduls, bevor Sie es. Die anderen Entwickler nicht haben, dies zu tun. Zweitens habe ich in der Lage gewesen zu beheben "Konnte nicht geladen, Datei oder assembly" XXX.YYY' oder eine Ihrer Abhängigkeiten" Problem über einen "hack", das ist nur eine Kurzfristige Korrektur durch die Erstellung einer class library in mein Projekt namens XXX.YYY und darunter die Klassen gesucht, die sind alle custom controls ie. Erben von System.Web.UI.WebControls.WebControl.
Weitere Gedanken....
- Haben Sie versucht, mit Reflektor?
- Haben Sie versucht, die Reinigung Ihrer ASP.NET temporäre Datei-Verzeichnis? C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Dateien
- habe versucht, das löschen der temp-Dateien, aber noch kein Glück
- ja, ich habe den Reflektor auf alle der dll in das bin-Verzeichnis meines web-application und konnte nicht finden jede Bezugnahme auf XXX.YYY.
- Haben Sie versucht, mit Hilfe von findstr in Ihrem Projekt-Verzeichnis, nur um zu sehen, wer hat eine Referenz auf xxx.yyy? cd <Projekt base-dir>; findstr /I /S /L XXX.YYY - erhalten Sie einige Müll auf der Konsole, weil mindestens eine Binär-Datei eine Referenz auf diesen Namen. Wenn es gibt zu viel Müll, machen 2 geht man, wie gesagt, auf der anderen pass-add /M . Beachten Sie, dass die /L bedeutet die Suche ist wörtlich.
- Siehe update in Frage
- Geben CCleaner versuchen auf die schlechte Maschine. Es bereinigt, temp-Verzeichnisse, internet-Geschichte, etc. Sie müssen relogin zu websites sobald Sie es aber. www.piriform.com/ccleaner
- danke für die Anregung, aber kein Glück mit diesem.
- OK... ich bin jetzt sehr neugierig, warum dies geschieht. 🙂 1) haben Sie eine aktive anti-virus läuft auf die kaputte Maschine? Nicht Symantec oder McAfee würde ich hoffen. 🙂 Wenn nicht, verwenden Sie eine der seriösen online-Scanner und überprüfen Sie dann Ihr problem-code wieder, wenn nichts gefunden/repariert. 2) Ist es möglich, deinstallieren Sie Visual Studio, dem .Net-runtime, die von diesem problem betroffen ist und dann neu installieren? Wir hatten ein ähnliches problem damals, als die erste .Net-runtimes veröffentlicht wurden, und fand 2 Möglichkeiten, die Dinge zu beheben. 1 ist die Methode, die ich beschrieben hat, 2 ist eine komplette Neuinstallation von windows, VS etc...
- Ich hatte ein drama in der Vergangenheit, wo ich war, verweisen auf eine VB6 ActiveX-DLL, für die ich hatte das Projekt Quelle für. Beim verschieben das Projekt auf einen anderen PC oder sich bewegenden "Dingen" um, müsste ich neu erstellen der DLL in der VB6IDE und fügen Sie die DLL in die Verweise in VS. Nicht sicher, ob dies bezieht sich auch viel, nur meine zwei Cent, da war ich immer die gleichen Fehler, aus irgendeinem seltsamen Grund.
- Bitte sehen Sie weitere update in Frage zu stellen. Die anti-virus ist auf beiden Rechnern identisch. Kann ich bei der deinstallation der runtime, aber hoffe, dass es nicht soweit kommen! Frage mich, ob das ist etwas, was Windows 7 im Zusammenhang.
- Tut mir Leid Niall, das ist die Letzte meiner Ideen... Es hat zu tun mit der Art, Win7 Berechtigungen behandelt. Ich bin mir nicht ein .Netto-Getriebe. Dieser kam von einer bekannten, die hat sich mit einem etwas ähnlichen problem. Suchen in allen Orten, die auf der kaputten Maschine, in dem Assemblys gespeichert werden, und stellen Sie sicher, Sie haben eine gleichmäßige Berechtigungen. Verwenden cacls " <Dateiname>. Er erzählt mir, dass die Dinge in der C:\WINDOWS\Microsoft.NET\Framework das sind config-Dateien sollten mindestens über die Berechtigung ändern und DLLs mindestens Lesen Berechtigungen für das NT-SYSTEM-Konto und die Benutzer für den web-server. Lohnt sich trotzdem einen Blick.
- Haben Sie versucht, mein Vorschlag? Es sollte nicht zu schwierig sein, um herauszufinden, jede assembly-Referenz-Problem. Die Idee ist, fuslogvw zu finden, was Assemblys verwenden. Dann verwenden Sie ildasm auf die einzelnen geladenen Assemblys. Es wird Ihnen sagen, welche Baugruppen Sie sind auf der manifest-Abschnitt. Ich denke, es lohnt sich zu versuchen, wenn Sie noch nicht
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei mögliche Gründe.
1) Wenn Sie Ihre webapp, die Sie verwenden noch die alte Baugruppen irgendwo auf Ihrem Computer. Ihre alten Assemblys wurden, verweisen auf die alte assembly "XXX.YYY".
2) Die neuesten binäre Sie gebaut wird noch immer auf die alte assembly "XXX.YYY".
Herausfinden, welche Baugruppen Sie Ihre webapp mit, wenn Sie mit einem debugger können Sie leicht finden Sie es heraus aus der Ausgabe von windows. Es sollten die ersten paar Zeilen der Ausgabe. Ein weiterer Weg, um herauszufinden, ist zu öffnen Sie das Modul in windows VS.NET IDE beim Debuggen.
Wenn du nicht Debuggen Sie es für ein paar Gründe, oder Sie Probleme haben werden, einen debugger anfügen, ein weiterer einfacher Weg, dies zu tun ist die Verwendung fuslogvw. Es gibt Sie die genauen Standorte aller erfolgreich geladen assemblis sowie der Baugruppen, dass es nicht geladen werden konnte. Bitte stellen Sie sicher, dass die fuslogvw als Administrator in Windows 7.
Nachdem Sie herausfinden, welche Baugruppen Sie Ihre webapp erfolgreich geladen wurde, können Sie tun, ildasm auf diesen Versammlungen, um zu sehen, welche Baugruppen Sie verweisen. Sie müssen überprüfen Sie Sie eins nach dem anderen leider.
Meine Vermutung ist, dass einige der erfolgreich geladenen assemblies sind tatsächlich kommen von irgendwo in der ASP.NET cache (GAC).
einfach mal die Projekte, die build-Konfiguration.. wenn es eine 64-bit-kompilierte dll auf Ihre Referenzen und Ihr Haupt-Projekt ist der 32-bit - (oder eine beliebige cpu und deine Maschine ist 32-bit) oder Umgekehrt, die Sie wil bekommen diesen Fehler
Tun Lösung suchen, die für den text "XXX.YYY" und löschen Sie alle vorkommen. Vielleicht haben Sie sth in einigen web.config-Datei.
Zusätzlich können Sie die *.csproj-Dateien, wenn Lösung Suche findet nichts. Sie sind im wesentlichen text-Dateien, so sollte es kein problem sein, entfernen Verweise.
Verwenden Sie die Dependency Walker (hängt) auf alle Ihre EXE-Dateien und DLLs, um zu sehen, welcher die Abhängigkeit fehlt. Sie ausführen sollten, hängt von den Arbeits-Verzeichnis des Projekts für die besten Ergebnisse.
Sobald Sie wissen, welche EXE/DLL ist der Schuldige, gehen Sie in die Einstellungen für das Projekt und sehen, ob die zu Recht beanstandeten Passagen Abhängigkeit ist dort erwähnt.
EDIT: eine Andere Sache fiel mir vor ein paar Minuten...
Wenn alle Ihre Abhängigkeiten erfüllt sind "blockiert", weil Sie als heruntergeladen markiert, durch einige MS tardware (Wenn man DL mit Inet-explorer zum Beispiel), die können verhindern, dass ausführbarer code geladen werden. Betrachten Sie die Eigenschaften der ausführbaren Dateien (DLL/EXE) mit dem Windows Explorer und sehen, wenn Sie ein entsperren-Taste auf der ersten Seite. Wenn ja, klicken Sie auf die Schaltfläche.
Dies hat mich einige Zeit, um herauszufinden, eine Weile zurück, ich hoffe, es wird helfen.
Aktivieren der Diagnoseprotokollierung für den build output ("Extras" - > Optionen -> Erstellen Und Ausführen -> Output-Log verbosity - - > Diagnose) und Bauen Sie die Lösung und sehen, wo Visual Studio wählt die dll (somedll.dll version xxx.yy). Nun führen Sie die Anwendung und sehen, wo die Laufzeit zu lösen versuchen, die dll. (Windbg ist eine option).
Sind Sie einfach nur eine Abhängigkeit fehlt. Es ist wahrscheinlich eine situation wie Projekt a hat Eine Referenz auf Projekt B, die eine Referenz auf Project C. Ihre Ausgabe-Verzeichnis fehlt die DLL für das Projekt C.
Tolle Neuigkeiten, ich habe das Problem gelöst!!! Ich hatte nach der Neuinstallation meine .net-runtime-Umgebung. Ich habe auch gelöschte Websites von IIS und readded Sie die website erneut. Bei mir lief es, das Problem nicht auftreten, und die Website lief.
Ein großes Dankeschön an alle für Ihre Hilfe und Unterstützung, sehr geschätzt. Alle mit Rat und Hilfe lotste mich in die Richtung um dieses Problem zu lösen!
Gehen
References
imSolution Explorer
imVisual Studio
. Wählen Sie die assembly, die immer beschwert. Wählen Sie es und gehen Sie zuView
- Menü-option und wählen SieProperty Window
an der Unterseite. Während der Montage ausgewählt ist, zeigen Sie deren Eigenschaften im Eigenschaften-Fenster und suchen Sie nachCopy Local
Wert. Wenn der Wert aufFalse
, legen Sie es aufTrue
. Die Projektmappe erstellen und zu veröffentlichen. Sollte es erfolgreich das problem lösen.