
CefSharp 快速上手把 Chromium 浏览器嵌入 .NET 桌面应用【免费下载链接】CefSharp.NET (WPF and Windows Forms) bindings for the Chromium Embedded Framework项目地址: https://gitcode.com/gh_mirrors/ce/CefSharpCefSharp 是 Chromium Embedded FrameworkCEF的 .NET 绑定让你在 WPF 或 WinForms 程序里用控件嵌入一个真正的 Chromium 浏览器可以导航页面、执行 JavaScript、接管下载甚至无界面渲染网页并截图。如果你要在桌面应用里展示 Web 内容或者需要自动化操作网页CefSharp 值得一试。它采用 BSD 协议可自由用于商业项目。它解决了什么问题老式浏览器控件渲染能力不足WinForms 自带的 WebBrowser 控件基于 IE 引擎HTML5 页面经常渲染错乱或白屏。CefSharp 提供 Chromium 内核的ChromiumWebBrowser控件现代 Web 页面开箱即用。WPF 里的控件叠加难题WPF 中嵌入 WinForms 控件会被 WPF 元素遮挡airspace 问题。CefSharp 因此提供了 CefSharp.Wpf 和基于 HwndHost 的 CefSharp.Wpf.HwndHost.Example按场景各取所需。没有窗口的程序也想操作网页CefSharp.OffScreen 可以在纯控制台进程里加载页面、执行脚本、输出截图官方示例 Program.cs 做的就是加载页面并保存截图到你的桌面。核心能力解读C# 与 JavaScript 双向通信是 CefSharp 的核心价值。你可以把一个 C# 对象注册到页面里让网页直接调用它的方法页面长什么样、调哪个按钮都不用写死在 C# 侧browser.JavascriptObjectRepository.Register(bound, new BoundObject(), false);这一行让页面里出现名为bound的 JS 对象可调用BoundObject暴露的方法。反向也成立用EvaluateScriptAsync就能在 C# 里执行任意 JS 并拿到返回值。双向通道打通后前端页面等于成了你的 UI 素材库。自定义 scheme 处理器是第二个常被忽略的能力。你可以注册custom://这类协议由 C# 代码决定页面从哪加载内容适合把 HTML 模板、本地资源打进程序里不依赖本地文件系统路径。下面这张图就是官方示例里通过自定义 scheme 加载出来的页面资源相关实现可参考 CefSharpSchemeHandlerFactory.cs 和 ImageTest.html。从0到1上手步骤一确认环境CefSharp 运行在 Windows 上需要 .NET Framework 4.6.2 或 .NET 6 及以上后者对应.NETCore系列 NuGet 包。如果只是用 NuGet 包无需编译 CEF 源码要从源码构建则要求 VC 2022。步骤二安装 NuGet 包按界面形态选一个包安装即可核心库会自动带上Install-Package CefSharp.WinFormsWPF 项目装CefSharp.Wpf控制台/无界面场景装CefSharp.OffScreen。步骤三初始化并创建浏览器Cef.Initialize(new CefSettings()); var browser new ChromiumWebBrowser(https://example.com) { Dock DockStyle.Fill };Cef.Initialize整个进程只调用一次浏览器控件随后即可挂到窗体上完整可运行示例见 Minimal 目录。版本与环境选择分支CEF 版本编译器.NET状态cefsharp/1497827VC 20224.6.2正式发布版cefsharp/1487778VC 20224.6.2停止支持cefsharp/1206099VC 20194.6.2停止支持master7827VC 20224.6.2开发中判断依据很简单日常使用选官方发布版 cefsharp/149需要新特性可跟踪 master但源码构建要求 VC 2022自 138 版本起.NETCore包一律要求 .NET 6。常见坑与自查现象程序一启动就崩溃或提示找不到 CEF原因x86/x64 不一致。CefSharp 的原生库分 x86、x64 两套由PlatformTarget决定拷贝哪套。 解决办法统一整个项目链的平台目标别在 AnyCPU 下混用 32 位依赖。现象页面正常但 JS 回调里抛跨线程异常原因CEF 的事件和脚本回调不一定在 UI 线程触发。 解决办法更新界面控件前先切回 UI 线程扩展方法InvokeOnUiThreadIfRequired在 WebBrowserExtensions.cs 里官方示例大量使用。现象报找不到浏览器子进程原因CefSharp.BrowserSubprocess.exe未随应用部署或位数不匹配。 解决办法检查输出目录中 CefSharp 子目录下的原生文件是否齐全或自行设置CefSettings.BrowserSubprocessPath。现象控制台应用里 Cef.Initialize 不生效原因控制台程序默认没有消息循环和同步上下文。 解决办法提供一个简单的SynchronizationContext写法参考 OffScreen.Example/Program.cs 开头的注释。CefSharp 适合需要在 Windows 桌面应用中嵌入 Chromium 内核、或做无界面网页操作的 .NET 开发者。更多细节建议从 README 开始读再对照 CefSharp.WinForms.Example 和 CefSharp.Wpf.Example 这两个示例项目跑一遍基本就能覆盖常见用法。【免费下载链接】CefSharp.NET (WPF and Windows Forms) bindings for the Chromium Embedded Framework项目地址: https://gitcode.com/gh_mirrors/ce/CefSharp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考