升级CefSharp WPF从105.3.390到119.4.30遇引用及API未定义问题
解决方案
问题1:LoadErrorEventArgs引用错误
- 先检查项目里CefSharp.Wpf和CefSharp.Common的NuGet版本是否完全一致(必须都是119.4.30),删掉所有旧版本的CefSharp相关引用(包括项目文件里手动添加的),然后重新安装对应版本的包。
- 代码文件顶部一定要加
using CefSharp;,LoadErrorEventArgs就在这个命名空间下,没加的话编译器找不到该类型。 - 打开项目的
app.config,添加程序集绑定重定向避免版本冲突:<dependentAssembly> <assemblyIdentity name="CefSharp" publicKeyToken="40c4b6fc221f4138" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-119.4.30.0" newVersion="119.4.30.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="CefSharp.Common" publicKeyToken="40c4b6fc221f4138" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-119.4.30.0" newVersion="119.4.30.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="CefSharp.Wpf" publicKeyToken="40c4b6fc221f4138" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-119.4.30.0" newVersion="119.4.30.0" /> </dependentAssembly> - 如果是手动引用本地DLL,别只引CefSharp.Common.dll,还要把CefSharp.Common包lib目录里的
CefSharp.dll也加上引用,版本必须是119.4.30。
问题2:LoadHtml和Cef未定义
- 同样要确保代码文件顶部加了
using CefSharp;,Cef类和ChromiumWebBrowser.LoadHtml方法都依赖这个命名空间。 - 检查
_browser的类型是不是CefSharp.Wpf.ChromiumWebBrowser,要是用了动态类型或错误的控件类型,肯定找不到LoadHtml方法。 - 删掉项目bin和obj目录下的所有文件,重新生成解决方案,旧的编译残留很容易导致API识别异常。
- 注意
Cef.Initialize的调用时机:必须在创建ChromiumWebBrowser实例之前调用,而且整个应用只能调用一次。
内容的提问来源于stack exchange,提问作者sfaust
相关产品推荐
相关产品推荐

