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

时间:2017-02-21 11:12:41

标签: c# winforms cefsharp

我已经在CefSharp WinForms应用程序上工作了几个星期而且我没有遇到任何问题。今天早上,在向应用程序添加一些内容时,我尝试运行它来测试某些内容并得到以下错误:

  

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

经过一段时间的搜索,我发现了这个:

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

我检查了项目的bin / Debug / x86,并且所有依赖项似乎都存在。更重要的是,它提前五分钟工作正常,我没有触及任何超出单个类的任何实体框架迁移。

我已经尝试过清理和重建解决方案,重新启动Visual Studio,重启我的电脑,清除/ bin / Debug,但这些都没有帮助。

为什么在没有它的情况下几天后会出现此错误,我该如何解决此问题?

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

4 个答案:

答案 0 :(得分:2)

最近我遇到了类似的问题。但即使在发布模式下,我也有同样的问题。浏览Github cefsharp FAQs 类似链接。

注意2 解决了我的问题

  

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

不得不修复视觉工作室,所有人都像以前一样开始工作。

答案 1 :(得分:2)

SuperBerry的安装VC ++重新分发程序包的解决方案为我解决了这个问题。我仅从天真的角度提供一些故障排除方面的见解。

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

那么首先,您是否拥有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”中。

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

 >dumpbin /dependents CefSharp.Core.dll

我得到的结果是:

 Dump of file CefSharp.Core.dll

 File Type: DLL

   Image has the following dependencies:

KERNEL32.dll
MSVCP110.dll
MSVCR110.dll
libcef.dll
USER32.dll
mscoree.dll

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

我从此过程中学到的东西是,很难知道您是否安装了正确的VC ++重新分发软件包。我以为在启用VC ++功能的情况下安装Visual Studio时应该会安装。我正在使用Visual Studio社区版本2019。我正在使用的项目是我从GitHub来源克隆的项目。我仍然对VC ++重新分发版本感到困惑。例如,我可以安装更高的版本,并且可以工作吗(即向后兼容)?

答案 2 :(得分:1)

首先,请确保您已安装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目标),将所有文件复制到项目的发布文件夹中。

答案 3 :(得分:0)

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