c# - tag - el tipo de interoperabilidad no se puede incrustar. use la interfaz aplicable en su lugar
System.IO.FileNotFoundException: no se pudo cargar el archivo o el ensamblaje ''X'' o una de sus dependencias al implementar la aplicaciĆ³n (3)
Tengo un problema extraño con la implementación de una aplicación, que hace referencia a un ensamblaje, escrito en c ++ administrado.
He creado un conjunto X, lo he compilado y lo he referenciado en un archivo exe, llamado Starter.
Starter.exe se inicia normalmente en mashine local. Sin embargo, cuando copio TODOS los contenidos de la carpeta de depuración de inicio a un mashine virtual e intento 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 ningún 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 fue capaz de encontrar archivos para todos esos.
También he cambiado 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, Versión = 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 ensamblaje ''X'' o una de sus dependencias ...
Lo más probable es que no se cargue otra dependencia.
Usted podría tratar de verificar las dependencias con un caminante de dependencias.
Es decir: http://www.dependencywalker.com/
También verifique su configuración de construcción (x86 / 64)
Edición: 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ó la excepción FileNotFoundException.
Vea aquí: DLL detectados que son de Internet y están "bloqueados" por CASPOL
Resolví este problema cambiando el nombre de la DLL. La DLL se cambió de nombre manualmente cuando se cargó en su ubicación compartida (se agregó un número de versión al nombre del archivo). Eliminar el 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.