Win7 + CefSharp 49.0 运行时报错 : “未能加载文件或程序集“cefsharp.core.dll”或它的某一个依赖项。找不到指定的模块。“

​问题

这个问题在多个平台都有答案,但是我分别进行了尝试,却没有与我的问题完全对症的,但是每个答案又都有一定的适用性,这些答案在不同的开发的环境中、不同的系统版本、不同的编译环境下,依赖的文件也不同。以下记录我遇到的又一种特定场景下的大约 30 种左右 的尝试:


开发环境

版本    Windows 11 家庭中文版
版本号    24H2
操作系统版本    26100.4946
体验    Windows 功能体验包 1000.26100.197.0
系统类型    64 位操作系统,
Microsoft Visual Studio Professional 2022 (2) (64 位)  版本 17.11.4
.Net Framework 4.5.0 + WPF + CefSharp 49.0.1


运行环境

Windows 7 专业版
Service Pack 1
Intel(R) Core(TM)i3-4170 CPU @3.70GHz 3.70GHz
8.00 GB
64 位操作系统
Windows 已激活


解决思路

image

根据已经查询到的资料,查看CefSharp.Core.dll的依赖项,基本确定了解决思路就是缺少文件msvcp120.dll、msvcr120.dll ,需要安装vcredist_x86.exe 或者 vcredist_x64.exe ,那么具体需要安装哪个版本呢 ? 安装之后一定是可用的吗 如果不按 规定安装,一定是不可用的吗?

我使用的 CefSharp 49.0 , 它依赖于 Microsoft Visual C++ Redistributable 2013

我的运行系统是64位的 因此我安装了64位版本 : https://aka.ms/highdpimfc2013x64chs

image


多种组合尝试

后续图片中的表格,里面的一些列的说明:

“配置”和“目标平台”这两列对应VS的这里:

image

image
:这一列表示我手动拷贝了2个文件到软件目录下;

“结果”列“成功”表示可以成功加载浏览器和显示内容,“失败”表示弹出了标题中的依赖错误;


安装 vcerdist_x64

当在运行环境中,安装 vcerdist_x64.exe 后,测试情况如下:

image


安装 vcerdist_x86

当在运行环境中,卸载 vcerdist_x64.exe ,然后安装  vcerdist_x86.exe 后,测试情况如下:

image


什么都不安装

当把以上安装的 vcredist_x86和 vcredist_x64 都卸载后,测试情况如下:

image

以上所有的测试,都基于 同一个解决方案中仅有1个项目的情况下,也就是解决方案的配置管理中 与 项目属性 中看到的  “配置” 和 “目标平台” 绝对是一致的。


解决方案与项目配置不同

但是我也验证了其他情况:

当解决方案中有多个项目的情况下,由于CefSharp49.0仅仅支持单一的 “目标平台”,仅能设置x86或者x64, 因此多个项目的情况下,当其他项目或者整个解决方案的 目标平台 设置为 Any CPU时,这个CefSharp项目就只能排除到这个解决方案之外进行维护,

也就是说:解决方案为 Release + Any CPU , 然后 Cef Sharp 项目 Release + x86, 此时无论进行以上的任何一个测试,不管是通过dll引用,或者非引用的反射方式调用,在 Win7 SP1,都失败。

以上的所有测试,基于开发环境是相同的, 都是 VS2022/Win10,


没有搞懂的操作

但是奇怪的是,当在另外一个电脑的开发环境下,VS2019/Win10, 解决方案为 Release + Any CPU, 浏览器模块是 Release + x86, 调用方式是模块的反射加载,这个条件下,通过两种方式的任意一种 在Win7 SP1 都是可行的:

1,安装 vcredist_x86

2,把 64位的 msvcp120.dll、msvcr120.dll  2个文件直接放到目录下


好像懂了好像没懂

我实在没有摸清楚全部的规律,但是问题的解决思路基本是确定的:

1,安装正确版本的 vcredist_x86 或者 vcredist_x64

2,如果1不行,就直接把 x64 或者 x86 的 msvcp120.dll、msvcr120.dll 直接放到软件目录下

3,如果1,2还不行,检查一下项目的 “配置” 和 “目标平台” ,尝试调整为Release , 尝试切换目标平台为 x86 或 x64

以上的所有问题,都是针对 Win7 SP1 进行的测试。

因为在Win10系统兼容性比较好,没有什么奇怪的错误,因为没有针对性验证。

posted @ 2025-09-05 22:13  行人--  阅读(163)  评论(0)    收藏  举报