2009-01-26 12 views
6

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 ayudarlo a reproducir el problema:¿Cómo incrusto Gecko usando gecko-sharp en Mono/Windows?

He usado SharpDevelop 3.0 y 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, el BrowserSharp.csproj tuvo que ser modificado para que se compile con Mono.

También hay un mensaje de advertencia:

conflictos encontradas entre diferentes versiones del mismo ensamblado dependiente .

Esto es extraño, ya que todos los conjuntos 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.

Respuesta

1

El primer paso para resolver su problema es descubrir por qué está fallando. Después de construir BrowserSharp acuerdo a sus instrucciones (aunque he recreado la csproj por separado), me encontré:

mono --debug BrowserSharp.exe

Con la bandera --debug, monoaural para 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 No se encuentra gtkembedmoz.dll en la distribución Mono, pero parece ser una instalación separada. Se puede encontrar un enlace de descarga here, y algunas instrucciones antiguas pero posiblemente útiles here.

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 tiempo de ejecución gtk-sharp y copiar los dlls faltantes en el directorio de compilación, logré que se ejecutara utilizando 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.

Cuestiones relacionadas