System.IO.FileNotFoundException: no se pudo cargar el archivo o ensamblado ‘X’ o una de sus dependencias al implementar la aplicación

Tengo un problema extraño con la implementación de una aplicación, que hace referencia a un ensamblaje, escrito en c ++ administrado.

Creé un ensamblado X, lo compilé y lo hice referencia en un archivo exe, llamado Starter.

Starter.exe se inicia normalmente en el mashine local. Sin embargo, cuando copio TODOS los contenidos de la carpeta de depuración de inicio en un mashine virtual, y trato de iniciarlo allí, se bloquea con la siguiente excepción:

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

Esto no tiene sentido para mí, porque X está justo en la misma carpeta que Starter.exe.

¿Qué podría estar causando este problema?

ACTUALIZAR

He examinado las dependencias en Reflector en la máquina de destino, y pude encontrar archivos para todas esas dependencias.

También cambié las configuraciones a x86 / win32 para todos los proyectos.

ACTUALIZAR

Aquí están los registros de Fusion Log (ubicación: 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. 

Los únicos errores están en el directorio 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. 

No puedo firmar el ensamblaje, ya que hace referencia a otros ensamblajes que no están firmados

… No se pudo cargar el archivo o ensamblado ‘X’ o una de sus dependencias

Lo más probable es que no pueda cargar otra dependencia.

podrías intentar verificar las dependencias con un walker de dependencias.

Es decir: http://www.dependencywalker.com/

También verifique su configuración de comstackción (x86 / 64)

Editar: También tuve este problema una vez cuando estaba copiando dlls en zip desde un recurso compartido de red “no confiable”. El archivo fue bloqueado por Windows y se generó FileNotFoundException.

Vea aquí: DLL detectadas que son de Internet y “bloqueadas” por CASPOL

Resolví este problema cambiando el nombre de la DLL. La DLL había sido renombrada manualmente cuando se cargó en su ubicación compartida (se agregó un número de versión al nombre del archivo). La eliminación del número de versión del archivo descargado resolvió el problema.

Tuve el mismo problema. Para mí, ayudó a eliminar el directorio .vs en la carpeta del proyecto.