首页 文章

在Visual Studio外部运行时,CefSharp显示空白页

提问于
浏览
1

我正在尝试创建一个C#类库,其中包含一个带有CefSharp WinForms浏览器的表单 . 该库被另一个应用程序用作插件 . 应用程序设置为在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 回答

  • 1

    正如我怀疑的那样,问题与缺少参考文献有关 .

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

相关问题