如何在WPF(.NET Core)中正确实现CefSharp?加载程序集异常求助
解决WPF(.NET Core)中CefSharp的FileNotFoundException并正确集成
你遇到的FileNotFoundException是CefSharp在WPF(.NET Core)项目里的常见问题,主要和平台目标设置、NuGet包安装不规范或者依赖文件缺失有关。下面一步步帮你排查解决,同时附上正确的集成流程:
一、异常核心原因
这个报错通常由以下情况导致:
- CefSharp完全不支持Any CPU平台,必须明确指定x86或x64架构
- 未安装对应版本的CefSharp NuGet包,或者包版本与你的.NET Core版本不兼容
- 项目构建后,输出目录缺少CefSharp的核心依赖文件(包括托管DLL和CEF原生库)
二、分步解决问题
1. 修正项目平台目标
这是最容易忽略但最关键的一步:
- 右键你的WPF项目 → 选择「属性」
- 切换到「生成」标签页,在「平台目标」下拉框里选择x86或x64(二选一,不要选Any CPU)
- 同时点击解决方案平台的下拉框,选择「配置管理器」,把解决方案平台也同步设置为对应的x86/x64,确保所有项目的平台一致
2. 正确安装CefSharp NuGet包
如果之前的包安装有问题,先卸载再重新安装:
- 打开NuGet包管理器,搜索并卸载已有的
CefSharp.Wpf和CefSharp.Common - 重新安装对应版本的包:对于.NET Core 3.1及以上版本,直接安装最新稳定版的
CefSharp.Wpf(它会自动依赖安装CefSharp.Common) - 注意:不同.NET Core版本对应不同的CefSharp最低版本,比如.NET 6需要CefSharp 99+,安装时可以查看NuGet包的描述确认兼容情况
3. 验证依赖文件是否存在
构建项目后,去输出目录(比如bin\x64\Debug)检查:
- 确认存在
CefSharp.Wpf.dll、CefSharp.Core.dll、CefSharp.dll这些托管文件 - 同时要确保有CEF的原生库文件,比如
libcef.dll、icudtl.dat等 - 如果缺失,尝试清理项目(右键项目→清理)后重新构建,或者手动从NuGet包的安装目录(通常在
%USERPROFILE%\.nuget\packages)复制对应文件到输出目录
三、正确的WPF集成代码示例
1. 应用启动时初始化CefSharp
在App.xaml.cs中添加Cef的初始化和关闭逻辑,确保在ChromiumWebBrowser创建前完成初始化:
using CefSharp; using CefSharp.Wpf; using System.Windows; namespace testwpf { public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { // 配置CefSharp设置(可选,根据需求调整) var settings = new CefSettings(); // 比如设置缓存目录:settings.CachePath = @"C:\CefSharpCache"; // 初始化Cef,确保只初始化一次 if (!Cef.IsInitialized) { Cef.Initialize(settings); } base.OnStartup(e); } protected override void OnExit(ExitEventArgs e) { // 应用退出时关闭CefSharp if (Cef.IsInitialized) { Cef.Shutdown(); } base.OnExit(e); } } }
2. MainWindow的XAML代码
你的XAML代码本身是正确的,只要确保命名空间引用正确即可:
<Window x:Class="testwpf.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf" Title="MainWindow" Height="550" Width="625"> <Grid> <cefSharp:ChromiumWebBrowser Grid.Row="0" Address="https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions" /> </Grid> </Window>
四、额外注意事项
- 如果你使用的是.NET 5+,确保项目的目标框架设置正确,不要混用.NET Framework和.NET Core
- 不要在
MainWindow的构造函数里手动初始化Cef,必须在应用启动阶段(OnStartup)完成 - 如果遇到其他初始化异常,可以尝试启用CefSharp的日志功能,在
CefSettings里设置LogFile路径,查看具体错误信息
内容的提问来源于stack exchange,提问作者Mai Minh Duc




