Как встроить Gecko с помощью Gecko-Sharp в Mono / Windows? - PullRequest
6 голосов
/ 26 января 2009

Gecko - это движок рендеринга для Firefox. Используя gecko-sharp, можно встроить его в любую программу Mono / GTK #. Для этого существует пример приложения под названием GladeSharpBrowser . Мне удалось построить его, используя измененный файл проекта, но он терпит крах. Это может помочь вам воспроизвести проблему:

Я использовал SharpDevelop 3.0 и учебник , чтобы настроить его с моей Mono 2.2 установкой. Я убедился, что он вызывает gmcs Mono для компиляции с использованием ProcMon. После настройки SharpDevelop пришлось изменить BrowserSharp.csproj , чтобы он компилировался с Mono.

Существует также предупреждающее сообщение:

Найдены конфликты между разными версии того же зависимого сборка.

Это странно, поскольку все сборки предоставлены Mono.

Конечно, есть и другие методы, такие как GeckoFX, но я особенно заинтересован в том, чтобы сделать это независимо от платформы, используя Mono.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2009

Вероятно, лучшим ответом на проблему кросс-совместимости является Mono.WebBrowser, поскольку он может быть независимым от движка в конечном итоге.

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

1 голос
/ 12 февраля 2009

Первый шаг к решению вашей проблемы - выяснить причину сбоя. После сборки BrowserSharp в соответствии с вашими инструкциями (хотя я заново создал csproj), я запустил:

mono --debug BrowserSharp.exe

С флагом --debug mono распечатает любое необработанное исключение:

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 ()
   ...

Я не смог найти gtkembedmoz.dll в дистрибутиве Mono, но, похоже, это отдельная установка. Ссылку для скачивания можно найти здесь и некоторые старые, но, возможно, полезные инструкции здесь .

Я скачал стабильный пакет GRE и скопировал gtkembedmoz.dll в каталог сборки. Он по-прежнему зависал, поэтому я проверил зависимости, используя disabled.exe , который дал понять, что в нем отсутствуют библиотеки Gtk +. После установки среды выполнения gtk-sharp и копирования недостающих библиотек в каталог сборки мне удалось запустить ее с использованием среды выполнения Microsoft .NET.

По какой-то причине он все еще не работал с использованием Mono. Я подозреваю, что есть какая-то разница в том, как Mono ищет неуправляемые библиотеки DLL, но я не рассматривал это. Независимо от того, используете ли вы Mono из Microsoft.NET, вам, вероятно, не нужно копировать эти библиотеки DLL в каталог сборки, нужно просто убедиться, что они установлены / настроены правильно, чтобы их можно было найти.

...