it-swarm-eu.dev

Impossible de charger le fichier ou l'assembly '***. Dll' ou l'une de ses dépendances

J'ai cette dll que j'ai créée il y a longtemps et que j'utilise pour me connecter à la base de données d'un logiciel spécifique pour lequel je développe. Je n'ai eu aucun problème depuis plus de 4 ans et d'innombrables applications avec cette dll.

En essayant de déployer ma dernière création, j'obtiens l'erreur suivante: 

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

Donc, pour chaque dll que j'ai écrit, j'ai toujours fait une simple application de formulaires pour tester cette dll de manière autonome. L'exécution de cette application simple a généré la même erreur. La DLL ne charge ni n'utilise rien d'autre que: System, System.Data, System.XML. Donc, en ce qui concerne les dépendances, je ne vois rien de mal à.

Au fait, tout fonctionne sur une station de développement. Le problème est limité aux stations de déploiement. .Net et les redistribuables nécessaires, puisque je fais tout en C++, sont déployés et fonctionnent.

L'exécution de FUSLOGVW.exe a montré que tout fonctionnait correctement.

En cours, depend.exe a déclaré: Avertissement: Au moins un module possède une importation non résolue en raison d'une fonction d'exportation manquante dans un module dépendant du chargement différé.

J'ai déjà essayé de réécrire le tout. Ce qui a donné les mêmes résultats.

Indices n'importe qui?

ÉDITE

Voici le message d'erreur total:

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\"
----------------------------------------\"

Il n'y a pas d'erreur dans l'afficheur d'événements.

29
Dewm Solo

ou une de ses dépendances

C'est le problème habituel, vous ne pouvez pas voir un DLL non géré manquant avec Fuslogvw.exe. La meilleure chose à faire est d’exécuter l’utilitaire ProcMon de SysInternals. Vous verrez qu'il recherche le DLL et ne le trouve pas. Le mode Profil de Dependency Walker peut également l’afficher.

35
Hans Passant

J'ai eu le même problème avec une DLL hier et tout ce qu'il a référencé était System, System.Data et System.Xml. Il s'avère que la configuration de construction pour le type de plate-forme n'est pas alignée. La dll a été construite pour x86 et le programme l'utilisait était "N'importe quel processeur" et, comme j'utilise une machine x64, le programme a été lancé en tant que x64 et avait des problèmes avec la dll x86. Je ne sais pas si c'est votre problème ou pas, je pensais juste que je le mentionnerais comme autre chose à vérifier.

18
light

J'ai eu le même problème. Pour moi, cela était dû aux paramètres par défaut du serveur IIS local de ma machine. Le moyen le plus simple pour y remédier consistait à utiliser le serveur de développement Visual Studio intégré :)

Les versions IIS les plus récentes sur les ordinateurs x64 ont un paramètre qui ne permet pas aux applications 32 bits de s'exécuter par défaut. Pour activer les applications 32 bits dans l'IIS local, sélectionnez le pool d'applications approprié dans le gestionnaire IIS, cliquez sur "Paramètres avancés", puis remplacez "Activer les applications 32 bits" de False par True.

6
Henric Rosvall

J'ai récemment frappé ce problème, l'application fonctionnerait bien sur les machines de développement et sélectionner d'autres machines, mais pas sur les machines récemment installées. Il s’est avéré que Visual C++ 11 Runtime était installé sur les ordinateurs sur lesquels il avait fonctionné, contrairement aux ordinateurs récemment installés. L'ajout du Runtime Visual C++ 11 redistribuable au programme d'installation de l'application a résolu le problème ...

5
danw

Je suis tombé dessus récemment. Il s'est avéré que l'ancien DLL était compilé avec une version précédente (Visual Studio 2008) et faisait référence à cette version des bibliothèques d'exécution dynamiques. J'essayais de l'exécuter sur un système qui ne contenait que .NET 4.0 et je n'avais jamais installé de bibliothèque d'exécution dynamique. La solution? J'ai recompilé le DLL pour lier les bibliothèques d'exécution statiques.

Vérifiez le journal des erreurs de votre application dans l'observateur d'événements (EVENTVWR.EXE). Cela vous donnera plus d'informations sur l'erreur et vous indiquera probablement la cause réelle du problème.

4
Jim Mischel

Cette réponse n'a aucun lien avec la situation du PO et constitue un scénario très improbable pour quiconque également, mais au cas où cela pourrait aider quelqu'un ...

Dans mon cas, je recevais le message "Impossible de charger le fichier ou l'assembly 'System.Windows.Forms, Version = 4.0.0.0 ..." parce que j'avais désassemblé et réassemblé le programme à l'aide de ILDAsm.exe et ILAsm.exe de .Net Framework/SDK version 2. Le passage à ILDAsm.exe et ILAsm.exe à partir de .Net Framework/SDK version 4 a résolu le problème. 

(Étrangement, bien que faire ce que j’ai fait puisse sembler être une erreur évidente, le fichier EXE résultant qui n’a pas fonctionné a indiqué qu’il ciblait .Net 4 lorsqu’il a été examiné avec JetBrains dotPeek.)

2
RenniePet

J'ai eu le même problème - un. Dll fonctionne tout le temps, puis mon ordinateur est tombé en panne et ensuite j'ai eu ce problème de «ne peut pas charger le fichier ou Assemblée ....

Deux solutions possibles: lorsque l’ordinateur est tombé en panne, il peut y avoir des fichiers incohérents dans

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

Suppression de ce dossier, recompilation et l’erreur a disparu.

Une fois, je devais aussi supprimer mon dossier de paquets (je l'avais lu ailleurs). Autorisez Visual Studio/nuget à installer les packages manquants (ou à les réinstaller manuellement), puis tout allait bien à nouveau.

1
outofmind

Un moyen plus simple de déterminer les dépendances d’un DLL natif est d’utiliser Dependency Walker - http://www.dependencywalker.com/

J'ai analysé le fichier DLL natif et découvert qu'il dépendait des fichiers MSVCR120.DLL et MSVCP120.DLL, qui n'étaient pas tous deux installés sur mon serveur de transfert dans le répertoire System32. J'ai installé le runtime C++ sur mon serveur de transfert et le problème a été résolu. 

0
Steve Rukuts

Avait le même problème et l'a résolu en s'assurant que les projets de la solution ont la même configuration et plate-forme (dans mon cas, c'était Debug x64). D'une manière ou d'une autre, il manquait x64 dans VIsual Studio pour une partie des projets et j'ai modifié manuellement le fichier .sln (copié les configurations et les plates-formes des projets correctement construits vers les projets pour lesquels les paramètres manquants manquaient). Voici à quoi cela ressemble pour l'un des projets:

{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

Mais ensuite, la même erreur s'est produite pour un projet contenant un fichier Java (* .jar) dans les dépendances. J'ai dû modifier manuellement les variables d'environnement pour créer un enregistrement avec cette valeur

C:\Program Files\Java\jre1.8.0_171\bin\serveur

pour le chemin de Java et placez-le au-dessus des éléments de chemin.

Cela a résolu le problème jusqu'à ce que je mette à jour Java sur ma machine. J'ai dû modifier le numéro de version dans les variables d'environnement pour qu'il corresponde au nom du dossier mis à jour.

C:\Program Files\Java\jre1.8.0_181\bin\serveur

0
Ghukas

1) Copiez les DLL de "Externals\ffmpeg\bin" dans le répertoire de sortie de votre projet (où reste l'exécutable); 2) Assurez-vous que votre projet est construit pour une cible x86 (s'exécute en mode 32 bits).

Suivez ce fil pour plus

0
user3490852