C# 如何在Mono/Windows上使用Gecko sharp嵌入Gecko?
Gecko是Firefox的渲染引擎。使用gecko sharp,可以将其嵌入任何Mono/GTK程序。有一个示例应用程序用于执行此操作。我可以使用修改过的项目文件来构建它,但它正在崩溃。这将帮助您重现问题: 我使用了和来设置我的安装。我确保它使用ProcMon调用Mono的gmc进行编译。在设置SharpDevelop之后,必须对其进行修改,以便使用Mono进行编译 还有一条警告消息: 发现不同客户之间的冲突 同一依赖项的版本 大会 这很奇怪,因为所有的程序集都是由Mono提供的C# 如何在Mono/Windows上使用Gecko sharp嵌入Gecko?,c#,.net,mono,gecko,C#,.net,Mono,Gecko,Gecko是Firefox的渲染引擎。使用gecko sharp,可以将其嵌入任何Mono/GTK程序。有一个示例应用程序用于执行此操作。我可以使用修改过的项目文件来构建它,但它正在崩溃。这将帮助您重现问题: 我使用了和来设置我的安装。我确保它使用ProcMon调用Mono的gmc进行编译。在设置SharpDevelop之后,必须对其进行修改,以便使用Mono进行编译 还有一条警告消息: 发现不同客户之间的冲突 同一依赖项的版本 大会 这很奇怪,因为所有的程序集都是由Mono提供的 当然,还有其
当然,还有其他方法,比如GeckoFX,但我特别感兴趣的是使用Mono以独立于平台的方式进行操作。解决问题的第一步是找出它崩溃的原因。按照您的指示构建BrowserSharp后(尽管我单独重新创建了csproj),我运行了: mono—调试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 () ... 未处理的异常:System.TypeInitializationException: Gecko.WebControl的类型初始值设定项引发异常---> System.DllNotFoundException:gtkembedmoz.dll at(包装器管理为本机)Gecko.WebControl:gtk_moz_embed_get_type() ... 我在Mono发行版中找不到gtkembedmoz.dll,但它似乎是单独安装的。可以找到下载链接,以及一些旧的但可能有用的说明 我下载了稳定的GRE包,并将gtkembedmoz.dll复制到build目录中。它仍然崩溃,所以我用它检查了依赖项,这表明它缺少Gtk+libs。在安装运行时并将丢失的DLL复制到构建目录后,我设法使用Microsoft.NET运行时使其运行
由于某些原因,它仍然无法使用Mono。我怀疑Mono搜索非托管DLL的方式有一些不同,但我还没有对此进行研究。无论您是否使用Microsoft.NET的Mono,您可能不需要将这些DLL复制到构建目录中,只需确保它们已正确安装/配置,以便找到它们。解决交叉兼容性问题的更好方法可能是Mono.WebBrowser,因为它最终可能是独立于引擎的 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 () ...