背景:
CEF : 是一个C/C++库,使用了google的chrome 开源内核WebKit引擎,可以允许开发者将网页嵌入CEF中进行展示
CefSharp:是一个基于CEF,使用C++/CLI进行二次开发封装,使.NET开发者可以使用C# 来控制CEF
CefSharp有Winform和WPF两个版本
1.网页打开速度问题:
使用了最简单的新建项目,打开网页明显感觉并没有chrome浏览器快,使用的是69.0版本
因为是使用的WPF项目,然后因为Cefsharp.WPF有一些不稳定性,所以选择了Cefsharp.Winform 。
在WPF控件中嵌入winform控件,所以需要用Winformhost 包一下。
但是发现打开网页的速度并不快,感觉也没有微软的Webbrowser快,本来使用的是49版本,因为要支持XP,后来升级了换成了69.0版本,但是依然速度没有起色。
今天又测试了下使用WPF版本,对比两个版本,发现并没有明显区别。
初步结论:cefsharp可能因为C++/CLI的转化层消耗了性能,因为直接用C++来调用CEF,明显速度是快上一些的
2.LINK : fatal error LNK1104: 无法打开文件“ucrtd.lib”
下载cefsharp63 准备编译,工程中项目几乎全是类库,只有CefSharp.WinForms.Example 和CefSharp.Wpf.Example 是windows应用
选中其中一个设为启动项,F5运行,哗啦啦报了一堆错,根本原因是cefsharp.core这个项目生成时报错了:LINK : fatal error LNK1104: 无法打开文件“ucrtd.lib”
这里可以点击LINK1104,会跳转到msdn,里面有详细的解释:
解决方案:
选中项目->右键->属性->常规 -->Windows SDK 改成当前系统的SDK版本,我这边是10.0.15063.0,重新生成即可
3.打开某些网站发现字体非常小,只有1px
一般网站都正常,就这个网站很特殊,字体很小,查看源代码,发现里面的元素都没有设定具体的大小和像素,只有small和large这种设定
把这个网站放到chrome和火狐、IE下都正常,只有在cefsharp下有问题,那么就是cefsharp的使用有问题
原因是locales文件夹中没有paks,或者 locales没有更新到对应的版本,这里我是paks还是49版本的,但是dll已经换成了69了
把locales下的paks更新下就好了
4.使用cefsharp 提示Abode flash is out of date
用的是cefsharp.winform 69版本
解决方案:
若安装了chrome,则在本地找到C:\Users\viruser.v-desktop\AppData\Local\Google\Chrome\User Data\PepperFlash\32.0.0.192
谷歌的本地chrome的配置,搜索下,最好是比较新的版本:
然后复制该文件pepflashplayer.dll
在项目根目录下新建一个flash文件夹,把dll文件拷贝到该目录下
代码修改如下,增加settings:
var cefsetting = new CefSettings();
cefsetting.CefCommandLineArgs.Add("ppapi-flash-path", @"flash\pepflashplayer.dll");
cefsetting.CefCommandLineArgs.Add("ppapi-flash-version", "32.0.0.192");
Cef.Initialize(cefsetting);
重新启动成功,ppapi-flash-version版本号可以在dll的详细信息里看到