如何包含 CEFSharp 所需的 VC++ 可再发行文件

How to include VC++ Redistributable Files Needed by CEFSharp

使用 CEFSharp 浏览器构建应用程序,在我的机器上运行良好,但在服务器上崩溃并出现以下错误:

System.IO.FileLoadException: 无法加载由 'CefSharp.Core.dll' 导入的程序。

我在网上看到过这个问题,最常见的解决方案似乎是安装 VC++ Redistributable。但是,我在我们的生产服务器上没有该访问权限。在开发服务器中,我尝试安装可再发行组件(x86、x64、2017 和 2013),但没有任何区别。计算机是 64 位的,但应用程序是 32 位的,所以我尝试了所有方法。

谁能告诉我具体需要将哪些文件添加到应用程序目录才能使 CEFSharp 正常工作。本文档第 6 节:https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#6-how-do-i-include-the-visual-studio-c-2012-redistributables-on-the-target-app 列出了所需文件的目录,但我使用的是 Visual Studio 2017,我的机器上没有这些目录。

附加信息:

更新:

虽然我仍然无法让 CEFSharp 在我的项目中工作,但我接受了 Peter Liapin 的回答,因为它确实回答了我提出的问题。现在我知道 VC++ Redistributable 中的哪些文件可以复制到服务器上我的应用程序文件夹,我只是没有他在我的计算机或服务器上提到的特定 dll。

此外,我使用 CEFSharp 创建了一个新的测试 Windows 表单项目,它在没有 VC++ Redistributable dll 的服务器上运行。但是,我需要 CEFSharp 浏览器在现有应用程序引用的用户控件中工作。

您需要随基于 CefSharp 的项目一起提供的 Visual C++ dll:

如果您使用 CefSharp v63.0.3 或以下版本:

  • msvcp120.dll
  • msvcr120.dll

如果您使用 CefSharp v65.0.0 或更高版本:

#Example of files for VC++ 2017(141), there will be a few less files for VC++2015(140) and a few more for VC++ 2019(142), copy everything from the `Microsoft.VC14x.CRT` folder where `x` matches the VC++ Version
concrt140.dll
msvcp140.dll
msvcp140_1.dll
msvcp140_2.dll
vccorlib140.dll
vcruntime140.dll

文件可以在您的 Dev PC 上找到:

  • C:\Windows\System32
  • C:\Program Files (x86)\Microsoft Visual Studio\[Version]\[Edition]\VC\Redist\MSVC\[Version]\[x64|x86]\Microsoft.VC14x.CRT 文件夹。
  • 如果您在计算机上查找文件时遇到问题,请参阅底部部分,VS2015 的文件夹结构与 VS2017/2019
  • 的文件夹结构略有不同

请注意,您的 PC 上必须安装适当版本的 Visual C++ 或 Visual Studio,否则您将无法找到它们:

通用 CRTVisual C++ 所必需的,在 Windows 10 上它是默认安装的。支持 Universal CRT 的本地部署,请参阅 https://docs.microsoft.com/en-us/cpp/windows/universal-crt-deployment?view=vs-2019#local-deployment

对于 Windows 7/8/8.1,您需要预先安装 Universal CRT 或按照上述 link 部署文件。

To deploy redistributable Visual C++ files, you can use the Visual C++ Redistributable Packages (VCRedist_x86.exe, VCRedist_x64.exe, or VCRedist_arm.exe) that are included in Visual Studio. In Visual Studio 2017, these files can be found in the Program Files[ (x86)]\Microsoft Visual Studio17\edition\VC\Redist\MSVC\lib-version folder, where edition is the Visual Studio edition installed, and lib-version is the version of the libraries to redistribute. In Visual Studio 2015, these files can be found under your Visual Studio installation directory in Program Files [(x86)]\Microsoft Visual Studio version\VC\redist\locale. Another option is to use redistributable merge modules (.msm files), which in Visual Studio 2017 can be found in the Program Files [(x86)]\Microsoft Visual Studio17\edition\VC\Redist\MSVC\lib-version\MergeModules\ folder. In Visual Studio 2015 these can be found in Program Files [(x86)]\Common Files\Merge Modules. It's also possible to directly install redistributable Visual C++ DLLs in the application local folder, which is the folder that contains your executable application file. For servicing reasons, we do not recommend that you use this installation location.

根据 https://docs.microsoft.com/en-us/cpp/windows/redistributing-visual-cpp-files?view=vs-2019VS2015 的位置与 VS2017/2019 略有不同。

我遇到了似乎完全相同的问题,通过将 msvcp140.dll 和 vcruntime140.dll 复制到我的应用程序的 bin 文件夹中,我能够使事情正常进行。我正在使用 CEFSharp 75.1.143 和 cef.redist.x86 75.1.14.

似乎 Microsoft 为所有 C++ 运行时版本提供了统一的安装程序,从 2015 到 2022.The 安装程序可用于 32 位或 64 位,具体取决于您的体系结构。

有关详细信息,请查看 Microsoft Visual C++ Redistributable latest supported downloads 文章。