wake-up-neo.net

Datei oder Assembly '***. Dll' oder eine ihrer Abhängigkeiten konnte nicht geladen werden

Ich habe diese DLL, die ich vor langer Zeit erstellt habe, und verwende, um eine Verbindung zur DB einer bestimmten Software herzustellen, für die ich entwickelt habe. Ich habe seit über 4 Jahren keine Probleme und unzählige Anwendungen mit dieser DLL.

Beim Versuch, meine neueste Kreation bereitzustellen, erhalte ich die folgende Fehlermeldung: 

System.IO.FileNotFoundException: Could not load file or Assembly '***.dll' or one of its dependencies. The specified module could not be found.

Daher habe ich für jede DLL, die ich jemals geschrieben habe, immer eine einfache Formularanwendung erstellt, um diese DLL alleine zu testen. Die Ausführung dieser einfachen App ergab den gleichen Fehler. Die DLL lädt oder verwendet nichts anderes als: System, System.Data, System.XML. Was die Abteilungen davon angeht, sehe ich nichts Falsches.

Übrigens funktioniert alles auf einer Entwicklungsstation. Das Problem ist auf Bereitstellungsstationen beschränkt. .Net und die erforderlichen Weiterverteilungen, da ich alles in C++ erledige, sind implementiert und funktionieren.

Das Ausführen von FUSLOGVW.exe zeigte, dass alles einwandfrei funktioniert.

Läuft bei changes.exe: Warnung: Mindestens ein Modul hat einen ungelösten Import aufgrund einer fehlenden Exportfunktion in einem von der Verzögerung abhängigen Modul.

Ich habe schon versucht, das Ganze neu zu schreiben. Was zu den gleichen Ergebnissen führte.

Hinweise jemandem?

BEARBEITET

Hier ist die Gesamtfehlermeldung:

See the end of this message for details on invoking \"
just-in-time (JIT) debugging instead of this dialog box.\"

************** Exception Text **************\"
System.IO.FileNotFoundException: Could not load file or Assembly 'connectionTo.dll' or one of its dependencies. The specified module could not be found.\"
File name: 'connectionToJobboss32.dll'\"
   at TESTConnection.Form1.button1_Click(Object sender, EventArgs e)\"
   at System.Windows.Forms.Control.OnClick(EventArgs e)\"
   at System.Windows.Forms.Button.OnClick(EventArgs e)\"
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)\"
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)\"
   at System.Windows.Forms.Control.WndProc(Message& m)\"
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)\"
   at System.Windows.Forms.Button.WndProc(Message& m)\"
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)\"
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)\"
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\"
\"



************** Loaded Assemblies **************\"
mscorlib\"
    Assembly Version: 4.0.0.0\"
    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)\"
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll\"
----------------------------------------\"
TESTConnection\"
    Assembly Version: 1.0.3996.18980\"
    Win32 Version: \"
    CodeBase: file:///C:/Program%20Files%20(x86)/conn/TESTConnection.exe\"
----------------------------------------\"
System.Windows.Forms\"
    Assembly Version: 4.0.0.0\"
    Win32 Version: 4.0.30319.1 built by: RTMRel\"
    CodeBase: file:///C:/Windows/Microsoft.Net/Assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll\"
----------------------------------------\"
System.Drawing\"
    Assembly Version: 4.0.0.0\"
    Win32 Version: 4.0.30319.1 built by: RTMRel\"
    CodeBase: file:///C:/Windows/Microsoft.Net/Assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll\"
----------------------------------------\"
System\"
    Assembly Version: 4.0.0.0\"
    Win32 Version: 4.0.30319.1 built by: RTMRel\"
    CodeBase: file:///C:/Windows/Microsoft.Net/Assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll\"
----------------------------------------\"

Es gibt keine Fehler in der Ereignisanzeige.

29
Dewm Solo

oder eine seiner Abhängigkeiten

Das ist das übliche Problem, Sie können keine fehlende nicht verwaltete DLL mit Fuslogvw.exe sehen. Am besten führen Sie das ProcMon-Dienstprogramm von SysInternals aus. Sie werden sehen, wie es nach DLL sucht und es nicht finden kann. Der Profilmodus in Dependency Walker kann dies ebenfalls anzeigen.

35
Hans Passant

Ich hatte gestern das gleiche Problem mit einer DLL und es wurde nur auf System, System.Data und System.Xml verwiesen. Es stellt sich heraus, dass die Build-Konfiguration für den Plattformtyp nicht in einer Reihe angeordnet ist. Die DLL wurde für x86 erstellt und das Programm, in dem sie verwendet wurde, war "Any CPU". Da ich eine x64-Maschine ausführte, wurde das Programm als x64 ausgeführt und es gab Probleme mit der x86-dll. Ich weiß nicht, ob dies dein Problem ist oder nicht, ich dachte nur, ich würde es als etwas anderes erwähnen.

18
light

Ich hatte das gleiche Problem. Für mich wurde dies durch die Standardeinstellungen auf dem lokalen Server IIS Server auf meinem Computer verursacht. Der einfachste Weg, das Problem zu beheben, bestand darin, stattdessen den in Visual Studio integrierten Entwicklungsserver zu verwenden :)

Neuere Versionen IIS Versionen auf x64-Computern verfügen über eine Einstellung, die die Ausführung von 32-Bit-Anwendungen nicht standardmäßig zulässt. Um 32-Bit-Anwendungen im lokalen IIS zu aktivieren, wählen Sie den entsprechenden Anwendungspool im IIS Manager aus, klicken Sie auf "Erweiterte Einstellungen" und ändern Sie "Enable 32-Bit Applications" von False auf True

6
Henric Rosvall

Ich traf kürzlich auf dieses Problem. Die App würde auf den Entwicklermaschinen einwandfrei laufen und andere Maschinen auswählen, jedoch nicht auf kürzlich installierten Maschinen. Es stellte sich heraus, dass auf den Maschinen, auf denen sie arbeitete, die Visual C++ 11-Laufzeitumgebung installiert war, während dies bei den neu installierten Maschinen nicht der Fall war. Durch das Hinzufügen der weitervertreibbaren Visual C++ 11-Laufzeitumgebung zum App-Installationsprogramm wurde das Problem behoben ...

5
danw

Ich bin vor kurzem darauf gestoßen. Es stellte sich heraus, dass die alte DLL mit einer früheren Version (Visual Studio 2008) kompiliert wurde und auf diese Version der dynamischen Laufzeitbibliotheken verwies. Ich habe versucht, es auf einem System auszuführen, auf dem nur .NET 4.0 installiert war, und ich hatte niemals dynamische Laufzeitbibliotheken installiert. Die Lösung? Ich habe die DLL neu kompiliert, um die statischen Laufzeitbibliotheken zu verknüpfen.

Überprüfen Sie das Anwendungsfehlerprotokoll in der Ereignisanzeige (EVENTVWR.EXE). Sie erhalten weitere Informationen zum Fehler und weisen wahrscheinlich auf die tatsächliche Ursache des Problems hin.

4
Jim Mischel

Diese Antwort hat nichts mit der Situation des OP zu tun und ist auch für jedermann ein sehr unwahrscheinliches Szenario, aber nur für den Fall, dass es jemandem helfen könnte ...

In meinem Fall erhielt ich die Meldung "Datei oder Assembly 'System.Windows.Forms, Version = 4.0.0.0 ... konnte nicht geladen werden", da ich das Programm mithilfe von ILDAsm.exe und ILAsm.exe von .NET Framework/demontiert und wieder zusammengesetzt hatte. SDK-Version 2. Die Umstellung auf ILDAsm.exe und ILAsm.exe von .Net Framework/SDK-Version 4 hat das Problem behoben. 

(Auch wenn das, was ich getan habe, scheinbar ein offensichtlicher Fehler ist, weist die resultierende EXE-Datei, die nicht funktioniert hat, auf .Net 4 hin, wenn sie mit JetBrains dotPeek untersucht wurde.)

2
RenniePet

Ich hatte das gleiche Problem - eine .dll funktionierte die ganze Zeit, dann stürzte mein Computer ab und danach hatte ich das Problem 'Datei oder Assembly konnte nicht geladen werden ... dll'

Zwei mögliche Lösungen: Wenn der Computer abstürzt, befinden sich möglicherweise inkonsistente Dateien in

C:\Users\<yourUserName>\AppData\Local\Temp\Temporary ASP.NET Files

Diesen Ordner löschen, neu kompilieren und der Fehler war verschwunden.

Einmal musste ich auch meinen Paketordner löschen (das hatte ich anderswo gelesen). Erlauben Sie Visual Studio/nuget, fehlende Pakete zu installieren (oder manuell neu zu installieren) und danach war alles wieder in Ordnung.

1
outofmind

Eine einfachere Methode, um festzustellen, welche Abhängigkeiten eine native DLL hat, ist die Verwendung von Dependency Walker - http://www.dependencywalker.com/ .

Ich analysierte das native DLL und stellte fest, dass es von MSVCR120.DLL und MSVCP120.DLL abhing, die beide nicht auf meinem Staging-Server im Verzeichnis System32 installiert waren. Ich habe die C++ - Laufzeitumgebung auf meinem Staging-Server installiert und das Problem wurde behoben. 

0
Steve Rukuts

Hatte dasselbe Problem und habe das Problem gelöst, indem sichergestellt wurde, dass Projekte in der Lösung dieselbe Konfiguration und Plattform haben (in meinem Fall war es Debug x64). Irgendwie fehlten dem VIsual Studio x64 für einen Teil der Projekte und ich bearbeitete die .sln-Datei manuell (kopierte die Konfigurationen und Plattformen von korrekt erstellten Projekten in die Projekte, in denen die Einstellungen fehlten, die ich benötigte). So sieht es für eines der Projekte aus:

{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Debug|x64.ActiveCfg = Debug|x64
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Debug|x64.Build.0 = Debug|x64
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Release|Any CPU.Build.0 = Release|Any CPU
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Release|x64.ActiveCfg = Release|x64
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Release|x64.Build.0 = Release|x64

Dann trat jedoch derselbe Fehler bei einem Projekt auf, das eine Java-Datei (* .jar) in den Abhängigkeiten hatte. Ich musste Umgebungsvariablen manuell bearbeiten, um einen Datensatz mit diesem Wert zu erstellen

C:\Programme\Java\jre1.8.0_171\bin\server

für Javas Pfad, und setzen Sie ihn auf die Pfadelemente.

Das Problem wurde behoben, bis Java auf meinem Computer aktualisiert wurde. Ich musste die Versionsnummer in Umgebungsvariablen bearbeiten, um mit dem aktualisierten Ordnernamen übereinzustimmen.

C:\Programme\Java\jre1.8.0_181\bin\server

0
Ghukas

1) Kopieren Sie DLLs von "Externals\ffmpeg\bin" in das Ausgabeverzeichnis Ihres Projekts (wo die ausführbare Datei verbleibt); 2) Stellen Sie sicher, dass Ihr Projekt für ein x86-Ziel erstellt wurde (läuft im 32-Bit-Modus).

Folge diesem Thread für mehr

0
user3490852