.NET Framework 4.7.2项目使用CefSharp.OffScreen加载DLL失败求助
针对.NET Framework 4.7.2项目中CefSharp.OffScreen 121.3.70无法加载CefSharp.BrowserSubprocess.Core.DLL的问题,可尝试以下方案:
手动指定子进程路径
.NET Framework的程序集加载机制与.NET Core不同,可在初始化Cef前显式指定子进程路径,确保加载正确的文件:
VB代码示例:Dim settings As New CefSettings() ' 指向输出目录中的CefSharp.BrowserSubprocess.exe settings.BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CefSharp.BrowserSubprocess.exe") Cef.Initialize(settings)确认依赖项的「复制本地」属性
右键项目中所有CefSharp相关引用(如CefSharp.Core、CefSharp.OffScreen、CefSharp.BrowserSubprocess.Core),检查「复制本地」属性是否设为True,确保编译时所有依赖文件都复制到输出目录。匹配VC++ Redistributable版本
CefSharp 121.x版本依赖VC++ 2022 Redistributable (x64),需确保安装的是最新版的x64版本。可卸载现有VC++ Redist后,重新安装官方对应版本。验证输出目录的完整依赖文件
检查bin/Debug/x64目录下是否存在完整的Cef核心文件:libcef.dll、chrome_elf.dll、icudtl.dat、CefSharp.BrowserSubprocess.exe等。若缺失,可手动从NuGet包的packages/CefSharp.OffScreen.121.3.70/runtimes/win-x64/native目录复制到输出目录。清理并重新生成解决方案
右键解决方案选择「清理」,然后「重新生成」,同时禁用Visual Studio的「快速启动」功能(若开启),避免依赖文件未完全复制。添加程序集绑定重定向
在app.config中添加CefSharp相关的绑定重定向,确保版本一致:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="CefSharp.Core" publicKeyToken="40c4b6fc221f4138" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-121.3.70.0" newVersion="121.3.70.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="CefSharp.OffScreen" publicKeyToken="40c4b6fc221f4138" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-121.3.70.0" newVersion="121.3.70.0" /> </dependentAssembly> </assemblyBinding> </runtime>
内容的提问来源于stack exchange,提问作者Jean Carlos Sanson

