用过cefsharp wpf.WinForms的进来

&&&&& 离上篇写介绍pc端的混合开发和为什么以cefsharp入手研究混合开发已经有好几天,一直忙,抽不出时间继续写怎么搭建cefsharp开发环境。其实没有时间是借口,一切都是懒,没有爱到深处。
&&&&& 今天继续写写怎么搭建cefsharp环境,开发winform、web混合应用程序。
&一、下载程序集dll。
&&&& 程序集下载地址在。可以通过nuget轻松获得所有的依赖库。如果的你的网络不好,可以先下载,然后再在项目中添加引用。 最小的程序集以及资源需要如下图
最简单的方法是通过包获取,Install-Package CefSharp.WinForms -Pre
二、把项目配置为x86或者x64目标平台
添加项目之后进行编译,可以你会碰到下面这个错误。
<mon does not work correctly on 'AnyCPU' platform. You need to specify platform (x86 / x64)。 这个错误其实是cefsharp的一个缺陷。cefsharpPic的项目团队说以后会把这个bug修补。我们暂时现在把这个问题解决。 就是项目的目标平台改为x64 或者x86。
三、初始化cefsharp并创建添加ChromiumWebBrowser显示网页。
&public partial class Form1 : Form &
&& { &&&&&
&& CefSharp.WinForms.ChromiumWebBrowser webCom = &&
&&&&& public Form1() &&&&
&&& { &&&&&&&&&
&& InitializeComponent(); &&&&&&&&
&&& Load +=Form_L &&&&&&
&&&&&&& protected void Form_Load(object sender, EventArgs e) &&&&
&&& { &&&&&&&&&&
& webCom = new CefSharp.WinForms.ChromiumWebBrowser(""); &&&&&&&
&&&& webCom.Dock = DockStyle.F &&&
&&&&&&&& panel1.Controls.Add(webCom); &&&&&&&
&&&& webCom.Load("");&&&&&&&
&&&&&&& 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。关于这两个资源文件的作用,有兴趣可以了解
浏览器的多进程架构机制原理。这里给一个资料你可以了解,讲解主流浏览器多进程架构机制:Chrome、IE。
下图是我的验证,打开多个ChromiumWebBrowser控件显示网页就加载多个CefSharp.BrowserSubprocess.exe进程。
& 这次先写到这里。虽然文章没有什么技术含量,但是是自己的实际经验和技术的探索,还希望得到群友的支持,也自己如果在cefsharp继续有什么收获也会继续在这里分享。
阅读(...) 评论()HTML混合开发
无疑是我最拿手的开发工作。可是作为一个想成为全能骑士的程序员,当然要能满足各种开发需求。 但是界面这种东西不让我用前端来做心里会很憋屈的。所以在各种需求面前我都会找是否能与HTML混合开发。
我使用过的混合开发平台
C# WebView
追溯到最早我的混合开发还是在C#中。使用的是WebView控件,在布局中加入一个WebView, 然后很方便的就可以和控制浏览器一样控制它。不过它有一个很大的问题,浏览器内核使用的是系统内核。使用IE问题并不大, 但是无法控制版本就会导致在不同系统中运行效果不同,如果做桌面应用还需要那么大费周章做兼容是很烦人的。 当然,优点也不是没有,控件这种形式很容易控制,很容易做多标签页这种东西,而且相互不干扰。
接触到第二个这种开发模式的就是nw.js了,在我刚接触的时候它还叫node-webkit。这是一个让我豁然开朗的开发平台, 以Node.js为基础开发可视化桌面应用,整个程序就是以JS来控制。它是以Webkit作为核心运行的, 因为有着自己的核心所以在不同的环境下可以有着相同的效果。它可以轻易的使用node.js的功能和JS扩展, 不过C&#43;&#43;扩展就搞得我有点懵&#36924;了。自己编写C&#43;&#43;扩展更是从来没成功过(不过我的C&#43;&#43;b本来就不熟悉)。
两次自定义桌面都是使用nw.js来做,不过窗体句柄操作是写的外部程序通过nw.js调用而并非扩展。
Flash是一个我一直希望它能发展的东西。在很多游戏平台总是能看到很多国外大神们的优秀Flash游戏作品。 这也是让我体会到了开发工具不分好坏,只有是否合适之说。Adobe AIR是使用Flash AS3来开发桌面应用的工具, 它所给出的功能在我看来并不亚于node.js,并且Flash在流媒体上有着较大的优势。在Adobe AIR中有一个HTMLLoader控件。 就如同C#的Webview一样是一个控件,不过区别在于它使用的是自己独立的内核。虽然它说支持到HTML5但是实际上差距比较大, 对canvas和svg这样的html5核心标签并不支持,并且部分表单样式上差异较大。不过它可以跨平台,并且支持度还不错,
曾经用它开发过安卓通过wifi控制打印机的app。
前面介绍的都是以桌面开发为主的混合开发平台,而PhoneGap则是主要开发移动端的混合开发平台。 因为没有IOS机,所以不清楚IOS方面的问题。在安卓端这边的话使用的是webkit内核,测试下应该是使用系统自带的内核, 在不同机型上会有不同的效果,且安卓4.3和安卓4.4差距天壤之别。不过可以使用crosswalk扩展来达到效果的统一和优化 (使用后效果将有很大差距),但是APP的容量一下子增加了18M左右。作为安卓混合开发的话就现在的使用体验我觉得该框架算是最佳选择。
CefSharp是我最近接触到的一个C#的HTML混合开发扩展,至于为什么接触了那么多桌面混合开发平台还会学这个扩展, 最主要还是因为各有所长吧。在大部分的需求中开发桌面应用我应该都是首选nw.js的,但是CefSharp却可以弥补nw.js对于我而言的短处。 我并不会很好的开发nw.js的C&#43;&#43;扩展,但是很多时候我开发桌面应用都离不开windows API。比如句柄和内存操作(做外挂)
、比如串口通讯(物联网)这些方面,我更愿意直接使用C#来编写。
尝试配置CefSharp
跟着网上的教程,我试着配置了一下CefSharp
1.首先我将我还在用的vs2012更新到了2013(貌&#20284;最新版需要)
2.创建一个WindowsForms项目
3.右键进入NuGet管理器,安装CefSharp扩展
4.这里遇到了和网上不一样的问题,我现在实际上并没有引入到CefSharp扩展,但是项目下面出现了packages文件夹。 在VS中手动引入mon和CefSharp.WinForms文件夹下相应系统的dll文件,这样就成功引入内容了。
5.在Forms初始化内容中写入如下代码
CefSharp.Cef.Initialize();
ChromiumWebBrowser&wb&=&new&ChromiumWebBrowser(&/&);
wb.Dock&=&DockStyle.F
this.panle.Controls.Add(wb);
6.此时的我还是无法运行,在经过一番查找之后发现还需要其他内容的支持,我将packages文件夹下另外两个文件夹中x64系统的CEF文件打开。 将内容复制到Debug文件夹下,并把x64文件夹里的dll剪切到Debug根目录。倒腾了好一会总算是成功运行。
一些需要注意的东西
成功之后尝试着做了一些开发,发现了一些问题
1.实际使用时API和网上的一些教程不太一样,应该是新版本的原因。
2.推荐在切换地址时进行URLencode,我的本地路径中有特殊符号#导致页面打不开,调试了一下才发现是这个问题。
3.载入本地HTML貌&#20284;不能使用相对路径
文章为原创内容并且是个人观点和见解,如有错误或问题欢迎指出
本文的地址为 :&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1996次
排名:千里之外
转载:14篇

我要回帖

更多关于 cefsharp.winforms 的文章

 

随机推荐