2010-01-14 36 views
17

Hice un programa WPF/C# y estoy usando el control de Internet para la edición HTML WYSIWYG.No se pudo cargar el archivo o ensamblado 'Microsoft.mshtml ... Fallo en la validación de nombre fuerte

es un programa Ejecutable regular.

funciona en la mayoría de las computadoras, sin embargo, algunas computadoras me dan el siguiente error.

No se pudo cargar el archivo o ensamblado 'Microsoft.mshtml, versión = 7.0.3300.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' o una de sus dependencias. La validación de nombre seguro falló.

El archivo 'Microsoft.mshtml.dll' se distribuye con el programa. Es con todos los otros dlls necesarios en la misma carpeta que el archivo exe.


Aquí está la salida de Fuslogvw

*** Assembly Binder Log Entry (1/14/2010 @ 6:36:51 PM) *** 

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

Assembly manager loaded from: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll 
Running under executable C:\Documents and Settings\office\Desktop\Database\DATABASE.exe 
--- A detailed error log follows. 

=== Pre-bind state information === 
LOG: User = CAMPUSREMOTE\office 
LOG: DisplayName = Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 
(Fully-specified) 
LOG: Appbase = file:///C:/Documents and Settings/office/Desktop/Database/ 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = DATABASE.exe 
Calling assembly : ChabadOnCampusMainFrontEnd, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: Start binding of native image Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. 
WRN: No matching native image found. 

Gracias

Respuesta

19

Compruebe que el archivo 'Microsoft.mshtml.dll', distribuido con el programa es el archivo PIA y no un archivo de Office. Algunos sitios afirman que los archivos de Office tienen "retraso en la firma" y que el archivo PIA (instalado con la instalación de VS) es una copia firmada. en mi equipo tengo 3 versiones diferentes del archivo 'Microsoft.mshtml.dll', (el mismo tamaño de los archivos, pero el contenido es diferente):

  1. "c: \ Archivos de programa \ Microsoft Visual Studio 9.0 \ Visual Studio Herramientas para Office \ PIA \ Office11 \ Microsoft.mshtml.dll"

  2. "C: \ archivos de programa \ Microsoft Visual Studio 9.0 \ Visual Studio Tools para Office \ PIA \ Office12 \ Microsoft.mshtml.dll"

  3. "c: \ Archivos de programa \ Microsoft.NET \ Primary Interop Assemblies \ Microsoft.mshtml.dll"

Elimina la referencia "Microsoft.mshtml.dll" del proyecto. Use la pestaña "Agregar referencia", ".Net", seleccione el archivo PIA, use la opción "copiar loacal". (Funcionó para mí ...)

Atara

+0

B "H Gracias. Eso es, básicamente, lo que me di cuenta. de alguna forma el dela y ddl firmado es el que se agrega al proyecto y se distribuye, sin embargo, en mi máquina local, el tiempo de ejecución .net tomó el firmado de todos modos porque estaba en el PIA. Así que tan pronto como distribuyas el del PIA, todos los probelms desaparecerán. – Rabbi

+0

Atara tu respuesta fue perfecta, gracias, me salvaste horas de trabajo, gracias !!! y gracias stackoverflow !! –

+0

Si alguien no puede habilitar "Copiar local", debe establecer "Insertar tipos de interoperabilidad" en Falso. (simplemente encontré esto) – Lyra

2

El primer paso para la búsqueda de este tema es determinar si es realmente Mcirosoft.mshtml.dll o una de sus dependencias. La mejor manera de hacerlo es usar fuslogvw para rastrear la falla de carga del ensamblaje. Proporcionará información detallada sobre qué ensamblaje está fallando.

Una vez que deterimen cuyo conjunto está fallando, por favor enviar de vuelta con los resultados.

EDITAR

Ese mensaje de advertencia indica que la operación tuvo éxito eventual. No parece tener el error.

+0

he publicado los resultados en la publicación original – Rabbi

1

que tenía este mismo problema también, pero mi problema estaba usando TFS Build 2008. El hintpath era relativa y tuvo que ser cambiado a la ruta exacta. De lo contrario durante la construcción se mantuvo recogiendo la Oficina MSHTML.DLL

<HintPath>..\..\..\..\..\..\..\..\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll</HintPath>

<HintPath>C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll</HintPath> 
3

Microsoft.mshtml.dll del PIA no está firmado carpeta.
Si ha firmado un proyecto, debe tomar la versión de la carpeta "Conjuntos de interoperabilidad primarios".


de hacerlo:

1. Quitar la referencia a Microsoft.mshtml (si tiene uno en su proyecto)

2. Haga clic en "Agregar referencia" y que no seleccione "Extensiones", pero en "Examinar" y apunte a "C: \ Archivos de programa (x86) \ Microsoft.NET \ Primary Interop Assemblies" (para máquinas de .64 bits): esa versión está firmada.

3. propiedades de edición (selección de referencia Microsoft.mshtml y pulse F4) con el fin de establecer:

Tipos de interoperabilidad Insertar = false
copia local = true


4. Reconstruir su proyecto

Cuestiones relacionadas