sharp net compilador c# .net mono gecko

c# - net - ¿Cómo incrusto Gecko usando gecko-sharp en Mono/Windows?



mono project (2)

Gecko es el motor de renderizado para Firefox. Usando gecko-sharp es posible incrustarlo en cualquier programa Mono / GTK #. Hay una aplicación de muestra llamada GladeSharpBrowser para hacer esto. Pude construirlo usando un archivo de proyecto modificado, pero está fallando. Esto podría ayudarte a reproducir el problema:

He usado SharpDevelop 3.0 y un tutorial para configurarlo con mi instalación Mono 2.2 . Me he asegurado de que llame a las gmcs de Mono para su compilación usando ProcMon. Después de configurar SharpDevelop, BrowserSharp.csproj tuvo que ser modificado para que se compile con Mono.

También hay un mensaje de advertencia:

Conflictos encontrados entre diferentes versiones del mismo ensamblaje dependiente.

Esto es extraño, ya que todos los ensamblajes son los proporcionados por Mono.

Claro, hay otros métodos como GeckoFX, pero estoy específicamente interesado en hacerlo de una manera independiente de la plataforma usando Mono.


Cuál es probablemente una mejor respuesta para su problema de compatibilidad cruzada es el Mono.WebBrowser, ya que podría ser independiente del motor con el tiempo.

http://www.mono-project.com/WebBrowser


El primer paso para resolver su problema es descubrir por qué está fallando. Después de compilar BrowserSharp de acuerdo con sus instrucciones (aunque recreé el csproj por separado), ejecuté:

mono --debug BrowserSharp.exe

Con el indicador --debug, mono imprimirá cualquier excepción no controlada:

Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Gecko.WebControl ---> System.DllNotFoundException: gtkembedmoz.dll at (wrapper managed-to-native) Gecko.WebControl:gtk_moz_embed_get_type () ...

No pude encontrar gtkembedmoz.dll en la distribución Mono, pero parece ser una instalación separada. Aquí puede encontrar un enlace de descarga y algunas instrucciones antiguas pero posiblemente útiles.

Descargué el paquete GRE estable y copié el gtkembedmoz.dll en el directorio de compilación. Todavía se bloqueó, así que revisé las dependencias usando depends.exe que dejaba en claro que faltaban las librerías Gtk +. Después de instalar el runtime gtk-sharp y copiar los dlls faltantes en el directorio de compilación logré que se ejecutara usando el tiempo de ejecución de Microsoft .NET.

Por alguna razón, todavía no funcionaba con Mono. Sospecho que hay alguna diferencia en cómo Mono busca DLL no administradas, pero no he investigado esto. Independientemente de si usa Mono de Microsoft.NET, probablemente no necesite copiar estos archivos DLL en el directorio de compilación, solo es cuestión de asegurarse de que estén instalados / configurados correctamente para que se encuentren.