本文主要介绍C#中如何搭建cefsharp开发环境,用cefsharp开发winform内嵌web应用程序。
一、使用VS中的nuget下载程序集dll或者nuget网站自行下载。
程序集下载地址在https://www.nuget.org/packages/CefSharp.WinForms/。目前版本已经更新到51.0 .可以通过nuget轻松获得所有的依赖库。下载后再在项目中添加引用。 主要dll如下图
二、把项目配置为x86或者x64目标平台
否则添加项目之后进行编译,会出现错误。
CefSharp.Common does not work correctly on “AnyCPU” platform. You need to specify platform (x86 / x64)。 这个错误其实是cefsharp的一个缺陷。暂时的解决方法就是将项目的目标平台改为x64 或者x86。
三、初始化cefsharp并创建添加ChromiumWebBrowser显示网页。
public partial class Form1 : Form
{
CefSharp.WinForms.ChromiumWebBrowser webCom = null;
public Form1()
{
InitializeComponent();
Load +=Form_Load;
}
protected void Form_Load(object sender, EventArgs e)
{
webCom = new CefSharp.WinForms.ChromiumWebBrowser(“www.baidu.com“);
webCom.Dock = DockStyle.Fill;
panel1.Controls.Add(webCom);
webCom.Load(“www.baidu.com“);
}
private void btn_multiChrome_Click(object sender, EventArgs e)
{ for (int i = 0; i < 5; i++) {
childForm child = new childForm();
child.Show();
}
}
}
这样winfrom就可以显示百度首页了
四、首次搭建cefsharp环境可能遇到的问题。
1、没有在程序启动的时候初始化cefsharp导致添加ChromiumWebBrowser控件显示一片灰色空白。
2、bin目录下没有包含CefSharp.BrowserSubprocess.Core.dll、CefSharp.BrowserSubprocess.exe。关于这两个资源文件的作用,有兴趣可以了解
浏览器的多进程架构机制原理。当程序中多个ChromiumWebBrowser控件显示网页就会加载多个CefSharp.BrowserSubprocess.exe进程。多个进程可以在任务管理器中看到。