web-dev-qa-db-fra.com

System.IO.FileNotFoundException: impossible de charger le fichier ou l'assembly 'X' ou l'une de ses dépendances lors du déploiement de l'application

J'ai un étrange problème avec le déploiement d'une application, qui fait référence à un assembly, écrit en c ++ managé.

J'ai créé un Assembly X, je l'ai compilé et référencé dans un fichier exe, appelé Starter.

Starter.exe démarre normalement sur la machine locale. Cependant, lorsque je copie TOUT le contenu du dossier de débogage de démarrage dans une machine virtuelle et que j'essaie de le démarrer à cet emplacement, il se bloque à l'exception suivante:

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

Cela n'a aucun sens pour moi, car X se trouve dans le même dossier que Starter.exe.

Quelle pourrait être la cause de ce problème?

MISE À JOUR

J'ai examiné les dépendances dans Reflector sur la machine cible, et il a pu trouver des fichiers pour tous ces éléments.

J'ai également changé les configurations en x86/win32 pour tous les projets.

MISE À JOUR

Voici les journaux de Fusion Log (emplacement: C:\FusionLog\Default\Starter.exe\X, Version = 1.0.4538.22813, Culture = neutral, PublicKeyToken = null.HTM):

*** Assembly Binder Log Entry  (6/4/2012 @ 1:56:13 PM) ***

The operation was successful.
Bind result: hr = 0x0. The operation completed successfully.

Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Documents and Settings\Administrator\Desktop\tmp\k;k\Starter.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = MENKAUR-7683827\Administrator
LOG: DisplayName = X, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/Administrator/Desktop/tmp/k;k/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = Starter.exe
Calling Assembly : Starter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Documents and Settings\Administrator\Desktop\tmp\k;k\Starter.exe.Config
LOG: Using Host configuration file: 
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based Assembly bind).
LOG: Attempting download of new URL file:///C:/Documents and Settings/Administrator/Desktop/tmp/k;k/X.DLL.
LOG: Assembly download was successful. Attempting setup of file: C:\Documents and Settings\Administrator\Desktop\tmp\k;k\X.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: X, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null
LOG: Binding succeeds. Returns Assembly from C:\Documents and Settings\Administrator\Desktop\tmp\k;k\X.dll.
LOG: Assembly is loaded in default load context.

Les seules erreurs se trouvent dans le répertoire C:\FusionLog\NativeImage\Starter.exe \:

*** Assembly Binder Log Entry  (6/4/2012 @ 1:56:13 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Documents and Settings\Administrator\Desktop\tmp\k;k\Starter.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = MENKAUR-7683827\Administrator
LOG: DisplayName = BookmarkWiz.Kernel, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/Administrator/Desktop/tmp/k;k/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = Starter.exe
Calling Assembly : Starter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: Start binding of native image X, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null.
WRN: No matching native image found.
LOG: IL Assembly loaded from C:\Documents and Settings\Administrator\Desktop\tmp\k;k\X.dll.

Je ne peux pas signer l'Assemblée, car elle fait référence à plusieurs autres assemblées, qui ne sont pas signées

24
Arsen Zahray

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

Très probablement, il ne parvient pas à charger une autre dépendance.

vous pouvez essayer de vérifier les dépendances avec un marcheur de dépendances.

C'est-à-dire: http://www.dependencywalker.com/

Vérifiez également la configuration de votre build (x86/64)

Edit: J'ai également eu ce problème une fois lorsque je copiais des DLL dans Zip à partir d'un partage réseau "non approuvé". Le fichier a été verrouillé par Windows et l'exception FileNotFoundException a été déclenchée.

Voir ici: DLL détectées provenant d'Internet et "bloquées" par CASPOL

16
flayn

J'ai résolu ce problème en renommant la DLL. Le DLL avait été renommé manuellement lors de son téléchargement vers son emplacement partagé (un numéro de version a été ajouté au nom du fichier). La suppression du numéro de version du fichier téléchargé a résolu le problème.

4
Ags1

J'ai eu le même problème. Pour moi, cela a aidé à supprimer le répertoire .vs dans le dossier du projet.

2
BonifatiusK