c# wpf windows-10 mshtml microsoft-edge

c# - MSHTML DLL en Windows 10



wpf windows-10 (6)

Tengo una solución de C # que utiliza Smith Html Editor (estoy desarrollando el proyecto principal que usa esto, por lo que no sé mucho sobre esta biblioteca), que hace referencia al MSHTML. Esto funcionó bien hasta que actualicé a Windows 10 y ya no puedo encontrar MSHTML. Puedo hacer referencia directamente a la DLL en la carpeta de GAC, y deja de quejarse y, por lo tanto, se acumula, pero está generando algunos errores de ejecución relacionados con el editor que no crean instancias.

Después de una pequeña investigación, resulta que MSHTML se ha eliminado de Windows 10, ya que ahora utiliza EdgeHTML. ¿Alguien tiene alguna idea de cómo puedo solucionar esto?

La solución todavía funciona para Windows 7.


Acabo de crear una entrada de blog sobre este tema. El problema es que el ensamblaje de Microsoft.mshtml.dll en la Caché de ensamblados global se vuelve a registrar de ActiveX durante el proceso de actualización. Para solucionar este problema, es necesario ejecutar "regasm" en el ensamblaje:

  1. Abra una instancia de "Indicador de comando del desarrollador para VS2013" (o cualquier versión de Visual Studio que esté usando). Ejecútelo como administrador haciendo clic con el botón derecho en el icono y seleccionando "Ejecutar como administrador".
  2. Vaya a "C: / Windows / assembly / GAC / Microsoft.mshtml / 7.0.3300.0__b03f5f7f11d50a3a". Es posible que tu camino varíe. Para verificar, vaya a "C: / Windows / assembly / GAC / Microsoft.mshtml" y escriba "dir".
  3. Una vez que esté en la ruta correcta, escriba regasm Microsoft.mshtml.dll

MSHTML sigue siendo un componente importante en Windows 10, incluso con Edge como navegador predeterminado. Lo puedes encontrar en "C: / Windows / System32". Para citar de las FAQ oficiales:

http://dev.modern.ie/platform/faq/will-the-webbrowser-control-work-with-mi

MSHTML:

En Windows 10, el control WebBrowser usará el motor de representación heredado de Internet Explorer, mshtml.dll. En este momento, EdgeHTML no está disponible a través del control WebBrowser.

EdgeHtml

En las aplicaciones universales de Windows creadas para Windows 10, el control WebView usa Microsoft EdgeHTML. Los controles WebView en aplicaciones creadas para Windows 8 y 8.1 continuarán cargando el MSHTML para preservar la compatibilidad.


Por alguna razón, en mi caso, el archivo Microsoft.mshtml estaba ubicado en un directorio diferente. En Visual Studio, haga doble clic en la referencia del ensamblaje y encontrará la ruta hacia él. Ahora abra la "Línea de comandos del desarrollador para VS2017", escriba el siguiente cd C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/Common7/IDE/PublicAssemblies . Entonces regasm Microsoft.mshtml.dll .


Tuve el mismo problema y creo que lo que está pasando, al menos en mi caso, es que el proyecto fue originalmente un proyecto VS2012 en Windows 7 y se instaló un ensamblaje de interoperabilidad primario al que se hizo referencia. Cuando quité y volví a agregar la referencia a MSHTML e hice una diferencia en los archivos, la única diferencia fue que <WrapperTool> se cambió de primary a tlbimp y <EmbedInteropTypes> se cambió de falso a verdadero.

En algún momento, Visual Studio agregó la capacidad de incrustar las envolturas COM directamente en el ensamblaje en lugar de hacer referencia a los PIA, por lo que supongo que una nueva instalación de VS2015 en Windows 10 ya no instala los PIA porque no son necesarios. Por eso es que al eliminar y volver a agregar la referencia se soluciona el problema y el proyecto también debe continuar funcionando bien en sistemas operativos más antiguos.


Tuve exactamente el mismo problema. Agregando el c: / windows / system32 / mshtml.tlb funcionó. Tenga en cuenta que no es el dll, pero el tlb. Muchas gracias por hacer esta pregunta y gracias Hans, por la respuesta :)


Usando VS 2015 tuve este problema después de la última actualización de Windows 10. Quité la referencia "Biblioteca de objetos HTML de Microsoft" y la agregué nuevamente al proyecto. Esto resolvió el problema en mi caso.