CefSharp坑点记录

3 篇文章 0 订阅

需求背景:         

        最近接到一个白板声译实时字幕的任务,展示从socket中读取的实时字幕,要求以windows窗体的形式展示,直觉这种前端展示的东西用网页的形式来呈现比较好控制样式,于是想在winform窗体内嵌入一个浏览器内核,字幕以网页的技术来实现。

技术选型:

         浏览器内核可以用winform自带的控件webbrowser、chrome的内核的ChromiumWebBrowser。经过调研webbrowser默认的背景为白色,需求里面字幕背景颜色要求为蓝色,所以网页刷新的过程中会出现闪烁的问题,并且因为稳定性的问题也会偶尔闪烁白色的背景,相对之下ChromiumWebBrowser则没有这些问题,故选择CefSharp来渲染网页。

实现遇到的坑点:

         webbrowser因为是微软封装的控件,从开发到部署都比较简便,但是遇到以上的问题时比较难以找到解决办法。相对之下,CefSharp自身则为我们排除了以上那些问题,但是实施过程则较为繁琐。简单步骤如下:

1、用vs2017创建一个windows程序项目,平台配置为Any CPU, 需要添加CefSharp依赖包,对于有外网权限的则可以直接通过在nuget中搜索cefsharp,在搜索结果中选择CefSharp.WinForms安装即可

nuget会自动的解析对应的依赖包,最终得到的安装包为

并且自动添加到项目引用当中,可以看到,引用了如下dll


       这里依赖包就安装完成了,然后在程序中就可以直接调用了:

var extensionForm = new Form();

var extensionBrowser = new ChromiumWebBrowser(url);

//extensionBrowser.IsBrowserInitializedChanged += (s, args) =>

//{

// extensionBrowser.ShowDevTools();

//};

extensionForm.Controls.Add(extensionBrowser);

extensionForm.Show(this);

但是如果开发环境没有外网权限,是手动将上述下载的4个依赖包放进packages文件夹下面的,需要手动的配置好对应的依赖关系,首先在vs中将上述三个引用dll添加成功。此时代码能编译通过,但是运行起来程序会报错:找不到CefSharp.Core.Runtime.dll或对应的依赖文件。是因为还需要手工添加配置项到.csproj文件中,可以先卸载项目然后编辑该项目文件,添加如下三项

然后再运行程序则会正常的渲染出对应的网页。

2、打包程序我使用的是Visual Studio Setup Projects工具生成为msi文件。如果没有Visual Studio Setup Projects扩展工具还需要先在vs扩展工具中下载安装此工具,然后创建安装项目

先添加项目输出,即为刚才创建的使用了CefSharp的windows窗体项目,vs自动会将检测到的依赖文件都加入进来,但是打开项目Debug目录发现CefSharp生成了很多运行时所依赖的文件,

 

但是x86和x64这两个文件夹并没有被添加进来,我们从生成目录下面把把他们手动的添加进来即可,这里注意,根据安装项目配置的平台(如下图)只需要添加x86或者x64即可。

这里选择x64,则只需将x64文件夹复制进来即可

否则会因为x86程序和目标平台不一致而编译报错。

到这里就可以编译打包程序生成msi文件了,安装,运行程序,程序报错:未找到CefSharp.Core.Runtime.dll或对应的依赖文件,这个之前直接运行CefSharp程序时也出现过,于是想到可能又是缺少什么配置,简单粗暴的做法是:用beyond compare工具直接比对安装生成的文件和用vs编译生成的文件,发现vs生成的.exe.config文件中包含一个配置项而安装生成的.exe.config中并没有

不知道为什么会这样,但是我可以直接先将这个配置添加到App.config中然后安装程序输出的.exe.config文件中就一定会有这个配置,这样程序就具备成功运行的所有条件了。

3、CefSharp运行平台所必须具备的环境。

一个CefSharp程序要成功运行,必须具备两个条件。

1、.net framework 4.5+

2、vc++2015

如果目标机器上没有vc++2015,可以采用xcopy的方式。即为,若程序为x86或者x64则将对应的运行时文件放在程序根目录即可,若为Any CPU,则需要根据机器环境在代码中做Load操作,具体参阅:https://www.cnblogs.com/Soar1991/p/14164100.html

4、最后总结。

知易行难,工作了若干年CefSharp在工作中算是司空见惯的一个工具,但是以前都没有亲自搭建框架过,这次身体力行一会,还是纠结了一下下,故写此文章记录一下,给予需要的人一点方便,节省时间。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值