需求是在项目中引入CefSharp 与H5、js交互,因为之前用过多次,所以没太当回事,
根据往常一样,打开NuGet管理,搜索CefSharp,下载CefSharp.winforms,
我这里用的是57版本的,这样需要注意的是.net版本需要用到4.5.2
都完成以后,以前我还总是会自己会引用,但是发现,.net版本需要用到4.5.2是不需要手动去引用的,即使引用里没有也不影响在类里导包
因为此项目为多项目形式,
我只是在我需要用的模块下载了CefSharp,在项目运行的时候,项目不进入到load方法,如果注释掉下面代码这部分就会进去,
var setting = new CefSharp.CefSettings();
setting.Locale = "zh-CN";
setting.CachePath = "CHBrowser/BrowserCache";//缓存路径
setting.AcceptLanguageList = "zh-CN,zh;q=0.8";//浏览器引擎的语言
setting.LocalesDirPath = "CHBrowser/localeDir";//日志
setting.LogFile = "CHBrowser/LogData";//日志文件
setting.PersistSessionCookies = true;//
setting.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";//浏览器内核
setting.UserDataPath = "CHBrowser/userData";//个人数据
///初始化
CefSharp.Cef.Initialize(setting);
ChromiumWebBrowser WebBrowser;
WebBrowser = new ChromiumWebBrowser(this.rootPath + @"\web\xhNumberCount.html"); //初始页面
//WebBrowser = new ChromiumWebBrowser("http://www.baidu.com"); //初始页面
WebBrowser.RegisterJsObject("jsObj", new JsFunction(), new CefSharp.BindingOptions() { CamelCaseJavascriptNames = false }); //交互数据
WebBrowser.Dock = DockStyle.Fill;//铺满
WebBrowser.Dock = DockStyle.Fill;//设置停靠方式
ultraPanel1.ClientArea.Controls.Add(WebBrowser);//加入窗体
直接崩溃了两天,偶然的在项目的主项目处想尝试下,就在项目主项目中也下载了 CefSharp,也在load里使用了同样的代码,发现load中可以正常加载,然后再回头看子项目,也可以加载了,后来将主项目里的 CefSharp卸载掉,子项目里即使下载了 CefSharp还是不能访问,
就这样总结出了一个道理,
如果c#有多个项目的话,子项目想使用 CefSharp,必须在子项目中下载的同时,在主项目也得下载。
本文来自投稿,不代表本站立场,如若转载,请注明出处:http://7i9.net/297.html