You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CefSharp v107.1.120在C# WinForms初始化时触发文件未找到异常

CefSharp v107.1.120 AnyCPU模式下FileNotFoundException问题排查与解决

问题概述

C# WinForms应用此前使用CefSharp v106.0.260运行正常,升级至v107.1.120后出现异常:

  • 执行Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandle: null)时抛出System.IO.FileNotFoundException,提示找不到CefSharp程序集或其依赖项
  • 项目以AnyCPU模式构建成功,Debug目录下生成x64/x86子目录,托管程序集(如CefSharp.dll)在根目录,其余原生依赖在子目录中
  • 手动将x64子目录文件复制到根目录后,执行Cef.EnableHighDPISupport()时更早触发相同异常

解决步骤

1. 严格控制CefSharp初始化代码顺序

必须在所有CefSharp相关代码执行前调用程序集解析订阅方法,正确顺序如下:

// 这行必须是第一个执行的CefSharp代码
CefRuntime.SubscribeAnyCpuAssemblyResolver();
// 后续初始化操作按此顺序执行
Cef.EnableHighDPISupport();
var settings = new CefSettings();
// 自定义settings配置...
if (!Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandle: null))
{
    // 初始化失败处理逻辑
}

2. 配置生成后事件确保依赖复制完整

打开项目属性→生成事件→生成后事件命令行,添加以下命令(替换版本号为实际使用的CefSharp版本):

xcopy /Y /E "$(SolutionDir)packages\CefSharp.WinForms.107.1.120\CefSharp\x86" "$(TargetDir)x86\"
xcopy /Y /E "$(SolutionDir)packages\CefSharp.WinForms.107.1.120\CefSharp\x64" "$(TargetDir)x64\"

该命令会自动将CefSharp的原生依赖复制到对应架构的子目录中。

3. 禁用"首选32位"选项

进入项目属性→生成→平台目标(AnyCPU),取消勾选首选32位,避免程序强制以32位模式运行导致找不到x64依赖。

4. 修复NuGet包安装完整性

  • 在NuGet包管理器中卸载CefSharp.Common和CefSharp.WinForms
  • 右键项目选择「清理」
  • 重新安装对应版本的CefSharp包
  • 重建项目

5. 禁止手动复制子目录文件到根目录

CefSharp的AnyCPU模式依赖架构分离的目录结构,根目录仅需保留托管程序集,原生依赖必须放在x64/x86子目录中,手动复制会引发依赖冲突。

其他可能原因

  • 输出目录配置错误:检查项目属性→生成→输出路径,确保x64/x86子目录在指定输出路径下
  • 杀毒软件拦截:部分杀毒软件可能误删CefSharp原生依赖,可暂时关闭杀毒软件测试
  • .NET版本不兼容:确认项目使用的.NET Framework版本≥4.6.2(CefSharp v107最低支持版本)

内容的提问来源于stack exchange,提问作者Leon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:10:43