在Visual Studio

时间:2017-06-08 14:08:11

标签: visual-studio cefsharp

我正在尝试创建一个C#类库,其中包含一个带有CefSharp WinForms浏览器的表单。该库被另一个应用程序用作插件。应用程序设置为在按下" start"在Visual Studio中。以这种方式启动应用程序工作正常,CefSharp浏览器显示并按预期工作。

当我尝试从文件系统启动应用程序时,问题就开始了。这次打开表单,以及DevTools,但CefSharp浏览器不会出现,DevTools表单/窗口是空白的。应用程序跟踪文件显示它确实加载了CefSharp DLL:

15.56.32.202 Requested assembly CefSharp.WinForms (version 51.0.0.0) LOADED from file C:\*PATH_TO_THE_FILES*\CefSharp.WinForms.dll (version 51.0.0.0)
15.56.32.205 Requested assembly CefSharp (version 51.0.0.0) LOADED from file C:\*PATH_TO_THE_FILES*\CefSharp.dll (version 51.0.0.0)
15.56.32.243 Requested assembly CefSharp.Core (version 51.0.0.0) LOADED from file C:\*PATH_TO_THE_FILES*\CefSharp.Core.dll (version 51.0.0.0)

相同的跟踪文件记录所有抛出的异常,在这种情况下没有。

其他一些注意事项: - 我使用的是Visual Studio 2015社区版 - 我正在为x64 CPU构建它 - 我已经尝试过Debug和Release内置文件,两者都通过VS工作,两者都没有VS
就失败了 - 我已确保在CefSharp加载的文件夹中有here提及的所有文件 - 我安装了Microsoft Visual C ++ redists(11.0,12.0,14.0)
- 还试过包括msvcp120.dll& msvcr120.dll及其输出文件夹中的调试变体(以防万一) - 我已经尝试过CefSharp版本51和57,行为保持不变

我唯一的猜测是,在引擎盖下,Visual Studio包含对一些重要文件/组件/ dll的引用/在没有它的情况下启动时不存在的任何内容。

更新

我尝试进一步调试这个并将附加方法附加到以下事件:
LoadingStateChanged
ConsoleMessage

我创建了一个在localhost上运行的测试html页面,它只是通过简单的消息调用console.log()。通过附加到ConsoleMessage的方法将消息写入跟踪,并且当从VS运行时,它将按照应有的方式写入跟踪。没有VS,它不是。

附加方法LoadingStateChanged写入跟踪第二个参数LoadingStateChangedEventArgs e的IsLoading属性的值。在有或没有VS的情况下运行都写了同样的事情:首先是真,然后是假。与VS一起运行时,在跟踪这些行之间记录了ConsoleMessage。

此外,我尝试使用以下方法禁用硬件加速:

CefSettings settings = new CefSettings(); settings.CefCommandLineArgs.Add("disable-gpu", "1")

但这也没有帮助。

1 个答案:

答案 0 :(得分:1)

我怀疑这个问题与缺少参考文献有关。

将VS输出目录(bin / x64 / Debug)的文件添加到外部应用程序的可执行文件夹中解决了这个问题。