CefSharp-无法加载文件或程序集“ CefSharp.Core.dll”或其依赖项之一

jar*_*uan 5 c# winforms cefsharp

我已经在CefSharp WinForms应用程序上工作了几周,但我对此没有任何问题。今天早上,在向应用程序添加一些内容的同时,我尝试运行它以测试某些内容并得到以下错误:

未处理System.IO.FileNotFoundException消息:mscorlib.dll中发生了'System.IO.FileNotFoundException'类型的未处理异常。其他信息:无法加载文件或程序集'CefSharp.Core.dll'或其依赖项之一。指定的模块无法找到。

搜索一段时间后,我发现了这一点:

https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#Runtime_dependencies

我检查了bin / Debug / x86中的项目,似乎所有依赖项都存在。更重要的是,它在五分钟前运行良好,对于Entity Framework迁移,我只接触了一个类。

我曾尝试清洁和重建解决方案,重新启动Visual Studio,重新启动PC并清除/ bin / Debug,但这些都无济于事。

为什么几天后没有出现此错误,我该如何解决该问题?

编辑:我做了一些进一步的实验,我能够使应用程序在发布模式下运行,但不能在调试模式下运行。如果我将“发布”模式的输出路径更改为“调试”,则它会失败,并显示相同的错误(同样,它会在“调试”中使用“发布”输出路径成功)。

Dan*_*elV 11

在安装以下可再发行组件之前,我遇到了同样的问题: Microsoft Visual C++ 可再发行组件

  • 当客户端具有 _**Microsft Visual C++ 2015 Redistributable (x86)**_ 卸载 _**Microsft Visual C++ 2015 Redistributable (x86)**_,然后安装 `Microsft Visual C++ 2015 时,我遇到了此错误-2019 Redistributable (x86) - 14.28.29325`版本,解决了与主题类似的错误,如以下异常:`System.BadImageFormatException:无法加载文件“CefSharp.Core.dll”或其集成代码或其中之一它的依赖项。不是有效的Win32应用程序。(HRESULT 返回异常:0x800700C1)` (2认同)

Tom*_*hik 9

SuperBerry安装VC++重新发行包的解决方案为我解决了这个问题。我将从我的 na\xc3\xafve 角度提供一些故障排除见解。

\n\n

错误消息非常清楚,要么缺少汇编 CefSharp.Core.dll,要么缺少它的依赖项之一。所以问题归结为你如何找出缺少的东西?

\n\n

首先,你有 CefSharp.Core.dll 吗?在解决方案资源管理器中查看存在此问题的项目的参考。您应该找到对 CefSharp.Core 的引用。如果找不到,则说明您错过了该程序集。如果您有一个,那么问题是您缺少其所需的依赖项之一。当您单击 CefSharp.Core 参考的详细信息时,您将获得其所在位置的完整路径。就我而言,它位于 \'C:\\Users\\tom\\source\\repos\\MyProject\\src\\packages\\CefSharp.Common.41.0.0\\CefSharp\\x86\ \CefSharp.Core.dll\'。

\n\n

然后,您需要获取 CefSharp.Core 依赖项的列表,以找出您缺少的依赖项。Dumpbin.exe 是一个命令行工具,可用于获取依赖项列表。为了使用 dumpbin,您需要确保可以在系统环境变量的路径中找到它。我在VC Tools bin目录的路径上找到了。就我而言,我在以下位置找到了一个: \'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\主机x64\\x64\'。打开命令提示符终端并导航到包含 CefSharp.Core.dll 的文件夹并键入以下内容:

\n\n
 >dumpbin /dependents CefSharp.Core.dll\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到的结果是:

\n\n
 Dump of file CefSharp.Core.dll\n\n File Type: DLL\n\n   Image has the following dependencies:\n\nKERNEL32.dll\nMSVCP110.dll\nMSVCR110.dll\nlibcef.dll\nUSER32.dll\nmscoree.dll\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经多年没有使用 Microsoft Visual Studio,因此必须尝试找出这些依赖项应该位于何处,以便能够解决它们。我只是进行了互联网搜索,例如“Kernel32.dll 位于哪里”,对每个 dll 进行搜索,直到找到丢失的 dll。就我而言,我找不到 MSVCR110.dll,所以我强烈怀疑这是我的问题。然后我在网上搜索“MSVCR110.dll 丢失”,发现它是 vc++ 重新分发的一部分。(SuperBerry,你的第一点是对的)。我还发现可以从以下位置下载:“ https://www.microsoft.com/en-us/download/details.aspx?id=30679 ”。我下载了 x86 和 x64 版本(尽管我只需要该项目的 x86 版本)。它们是可执行文件,运行时会安装它们。安装它们后,我在 \'C:\\Windows\\SysWOW64\' 和 \'C:/Windows\\System32\' 中找到了它的副本。瞧,这个问题已经解决了。

\n\n

我从这个过程中学到的是,很难知道您是否安装了正确的 VC++ 重新发行包。我以为当 Visual Studio 安装时启用了 VC++ 功能时就已经安装了。我正在使用 Visual Studio Community 版本 2019。我正在使用的项目是我从 GitHub 源克隆的项目。我仍然对 VC++ 重新发行版本控制感到困惑。例如,我是否可以安装一些更高版本并且它会起作用(即向后兼容性)?

\n


Sup*_*rry 8

首先,确保您安装了 VC++ 发行版:

  • CefSharp v65 及更高版本:下载 VC++ 2015 Redist
  • 较旧的 CefSharp 版本:使用 VC ++ 2013 Redist

您可以从https://support.microsoft.com/en-gb/help/2977003/the-latest-supported-visual-c-downloads下载正确的版本

其次,我之前没有看到人们提到这一点,我在处理这个问题几个小时后找到了这个解决方案:

某些 CefSharp 版本需要 CRT 包。请在“ C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs ”中找到它们,选择正确的版本文件夹(x86 或 x64,取决于您的 CefSharp 目标),将所有文件复制到发布文件夹中你的项目。

  • 如果您安装了正确的“VCRedist”,那么您不需要任何与“通用 CRT”相关的内容。阅读 https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/ 的“分发使用通用 CRT 的软件”部分 (2认同)

小智 5

我遇到过同样的问题。对我有用的是添加

    <CefSharpBuildAction>Content</CefSharpBuildAction>
Run Code Online (Sandbox Code Playgroud)

到您正在处理的项目的 csproj 内的第一个 PropertyGroup。


小智 3

即使在发布模式下我也遇到了同样的问题。浏览GitHub CefSharp 常见问题解答注释 2解决了我的问题。

如果从源代码编译(不推荐,使用 Nuget 包)并且您注意到无法再在调试模式下构建,但发布版本工作得很好,您可能需要修复您的 Visual Studio 版本。在极少数情况下会发生这种情况,您将收到与丢失的非托管 .dll 文件完全相同的消息,如上所示。

必须修复 Visual Studio,一切都开始像以前一样工作。

  • 这个页面和票数证明它并不那么罕见...... (3认同)