CefSharp v108.4.13 x64正常但x86启动崩溃,求排查建议
升级CefSharp至v108.4.130后x86平台初始化崩溃排查建议
问题背景
原本使用CefSharp v91.1.21,后升级NuGet包:将cef.redist.x64、cef.redist.x86升级至108.4.13,cefsharp.common和cefsharp.winforms升级至v108.4.130。
升级前以x86为目标平台,通过ClickOnce部署无异常;升级后WinForms项目在x64目标平台运行正常,但x86平台下执行Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);时崩溃,崩溃转储显示:
未处理的异常位于0x10CC6C48 (libcef.dll)
且libcef.dll版本为108.4.13。
x86目标平台构建诊断信息
CefSharp After Build Diagnostic CefSharpBuildAction = Content CefSharpPropertiesLoaded = true CefSharpTargetDir = CefSharpTargetDirAnyCpu32 = x86 CefSharpTargetDirAnyCpu64 = x64 CefSharpAnyCpuSupport = RuntimeIdentifier = EffectivePlatform = Platform = x86 PlatformName = x86 Platforms = PlatformTarget = x86 CefSharpPlatformTarget = x86 PlatformTargetAsMSBuildArchitecture = x86 TargetFramework = TargetFrameworkVersion = v4.8 libcef.dll exists = bin\x86\Debug\libcef.dll CefSharpTransformXmlDllPath = C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VisualStudio\v16.0\Web\Microsoft.Web.Publishing.Tasks.dll NuGetProjectStyle = NuGetToolVersion = OutputType = WinExe OutDir = bin\x86\Debug\ Prefer32Bit = true
相关日志信息
[0112/154303.980:ERROR:broker_win.cc(56)] 读取代理管道时出错: 管道已结束。(0x6D)
排查建议
- 关闭
Prefer32Bit选项:当前诊断显示Prefer32Bit = true,x86目标平台下开启该选项可能引发进程环境冲突。右键项目→属性→生成,取消勾选“首选32位”后重新编译测试。 - 验证x86依赖完整性:尽管诊断显示
libcef.dll存在,仍需确认所有x86版本的CefSharp依赖文件(如icudtl.dat、CefSharp.dll、CefSharp.WinForms.dll、d3dcompiler_47.dll等)都已正确复制到bin\x86\Debug\目录。 - 禁用依赖检查初始化:暂时将
Cef.Initialize的performDependencyCheck参数改为false,手动确认依赖齐全后再初始化,排查是否为依赖检查逻辑导致崩溃。 - 启用Cef详细日志:初始化前配置日志路径,获取崩溃前的详细日志:
查看生成的日志文件,定位崩溃前的关键错误提示。var settings = new CefSettings(); settings.LogSeverity = CefLogSeverity.Verbose; settings.LogFile = @"C:\temp\cef_log.txt"; Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null); - 清理重建项目:清理项目的bin和obj目录,重新还原NuGet包并编译,避免旧版本文件残留引发冲突。
- 先测试本地运行:确保x86平台下本地直接运行正常后,再排查ClickOnce部署相关问题,排除部署过程中文件缺失或损坏的可能。
内容的提问来源于stack exchange,提问作者Watson
相关产品推荐
相关产品推荐

