C# - 使用Gecko和xul构建Windows

时间:2018-04-11 15:31:27

标签: c# xul gecko xulrunner geckofx

我在将C#中的Gecko与XUL集成时遇到了一些问题。

1 /我已经下载了geckofx45.45.0.34.nupkg。有了这个,我已经在' .zip'中重新命名了它的扩展名。并解压缩此文件夹。我有很多目录。

2 /然后,我在C#(.NET Framework 4.5.2)中创建了一个Windows窗体应用程序。通过'解决方案资源管理器,我添加了第2步生成的两个库(Geckofx-Core.dll和Geckofx-Winforms.dll)

3 /然后,在工具箱中,选择“所有Windows窗体”。崩溃,我做了右键点击并选择了项目'。然后,在.NET Framework组件中'选项卡,我已经添加了Geckofx-Winforms.dll。

4 /我重启了Visual Studio 2015

5 /然后,我再次打开了我的项目并添加了一个GeckoBrowser'从工具箱到我的窗口的组件。

6 /然后,我编译了我的项目。没关系。但是,当我尝试执行我的申请时,我遇到了问题:

An unhandled exception of type 'System.DllNotFoundException' occurred in Geckofx-Core.dll
Additional information: Unable to load DLL 'xul': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

所以,我已经在http://ftp.mozilla.org/pub/xulrunner/releases/latest/runtimes/xulrunner-41.0.2.en-US.win32.zip上下载了xulrunner并解压缩了该文件。结果:C:\ xulrunner \ xulrunner-41.0.2.en-US.win32 \ xulrunner \

7 /然后,在我的项目的属性中,在'参考路径'中,我添加了路径C:\ xulrunner \ xulrunner-41.0.2.en-US.win32 \ xulrunner的\

8 /我再次启动了我的应用程序,并且在屏幕上始终出现相同的错误

我还试图使用' TlbImp.exe'没有成功。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我使用的方法需要将xulrunner文件夹放入app文件夹,然后使用此方法:

private void InitializeGeckoEngine()
    {

        try
        {
            if (!Directory.Exists(Paths.XulRunner))
            {
                MessageBox.Show($"Firefox folder not found at {Paths.XulRunner}!");
            }

            Xpcom.EnableProfileMonitoring = false;
            Xpcom.Initialize(Paths.XulRunner);

        }
        catch (Exception ex)
        {
            MessageBox.Show($"Firefox engine not detected or was not loaded correctly. Loading path: {Paths.XulRunner}. Exception details:\n" + ex + ex.InnerException, "Error",
                MessageBoxButton.OK, MessageBoxImage.Error);

        }
    }

关键部分当然是Xpcom.Initialize()调用。