winforms 无法加载文件或程序集“Thesearch.net”或它的某一个依赖项

pepwfjgg  于 2022-11-25  发布在  .NET
关注(0)|答案(6)|浏览(138)

我已经在一个CefSharp WinForms应用程序上工作了几个星期,我没有遇到任何问题。今天早上,当我向应用程序添加一些东西时,我试图运行它来测试一些东西,并得到了下面的错误:
未处理系统.IO.FileNotFoundException消息:mscorlib.dll中发生类型为“System.IO.FileNotFoundException”的未处理异常其他信息:未能加载文件或程序集“These.net”或它的某一个依赖项。未能找到指定的模块。
找了一会儿,我找到了这个:
https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#Runtime_dependencies
我检查了项目的bin/Debug/x86,所有的依赖项似乎都存在。更重要的是,它在五分钟前还工作得很好,我没有触及实体框架迁移的单个类以外的任何内容。
我尝试过清理和重建解决方案、重新启动Visual Studio、重新启动我的PC以及清除/bin/Debug,但这些都没有帮助。
为什么几天没有出现此错误后现在会出现此错误,我该如何解决此问题?

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

tvz2xvvm

tvz2xvvm1#

首先,确保您安装了Microsoft Visual C++可再发行组件:

  • v93及更高版本:使用MicrosoftVisual C++ 2019可再发行软件包或更高版本
  • 版本v65 - v92:使用MicrosoftVisual C++ 2015可再发行软件包或更高版本
  • 旧版本:使用MicrosoftVisual C++ 2013可再发行软件包(精确版本)

您可以从Microsoft下载Visual C++ Redistributable。如需版本相容性的详细信息,请参阅C++ binary compatibility between Visual Studio versions
请确定符合正确的架构,如果您的应用程序是x64,则需要安装Visual C++ Redistributable的x64组建。同样地,如果您的应用程序是x86,则需要安装Visual C++ Redistributable的x86组建。
Microsoft Visual C++可再发行组件依赖于Universal CRT。通用CRT是Windows 10/11的一部分。在Windows的较早版本上,Visual C++ Redistributable将安装Universal CRT
对于那些希望在应用程序中包含Visual C++ Runtime的人来说,在技术上可以在应用程序中包含运行时。另请参阅Microsoft的Deployment in Visual C++文章中的本地部署部分。

egmofgnx

egmofgnx2#

在安装以下可再发行软件包之前,我遇到了同样的问题:

dvtswwa3

dvtswwa33#

SuperBerry的安装VC++重新发布包的解决方案为我解决了这个问题。我将从我天真的Angular 提供一些故障排除的见解。
错误信息很明显,要么是汇编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,我不得不尝试找出这些依赖项应该位于何处,以便可以解决它们。我只是简单地在Internet上搜索,如“Kernel 32. dll位于何处”,对每个dll都这样做,直到找到丢失的dll。在我的情况下,我找不到MSVCR 110. 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”中找到了它的副本。低,看看这个问题解决了。
我从这个过程中学到的是,我的一个问题是,很难知道你是否安装了正确的VC
重新分发包。我以为在安装Visual Studio并启用VC功能时,我已经安装了。我使用的是Visual Studio社区版本2019。我正在处理的项目是我从GitHub源代码克隆的项目。我仍然对VC感到困惑重新发布版本控制。例如,我是否可以安装一些较新的版本,它是否可以工作(iidoEe.向后兼容)?

xmjla07d

xmjla07d4#

我也遇到了同样的问题。对我有效的方法是添加

<CefSharpBuildAction>Content</CefSharpBuildAction>

到您正在行程之项目的csproj内的第一个PropertyGroup。

ozxc1zmp

ozxc1zmp5#

即使在发布模式下,我也遇到了同样的问题。通过GitHub CefSharp常见问题解答,***注2***解决了我的问题。
如果从源代码编译(不推荐使用Nuget包),并且您注意到无法再以调试模式进行生成,但发布版本可以正常工作,则可能需要修复您得Visual Studio版本.这种情况很少发生,您会收到与上面所示得缺少非托管.dll文件完全相同得消息.
不得不修复Visual Studio,一切都像以前一样开始工作。

iyfamqjs

iyfamqjs6#

对于我未来的我,有这个相同的问题,每次我得到这个错误,当我在Visual Studio中启动我的.net核心3.1 wpf应用程序-〉无法加载文件或程序集'CefSharp. Core. Runtime。
那花了我几个小时!
我的解决方案:不要在WinForm或WPF Window类中初始化Cef。您需要在启动main/app中初始化它。在我的示例中,我需要添加以下内容:

public App()
{
   CefSettings _browserSettings = new CefSettings();
   ...
   Cef.Initialize(_browserSettings);
}

相关问题