[英]Could not load file or assembly '***.dll' or one of its dependencies
我有一个很久以前创建的dll,用于连接到我为其开发的特定软件的db。 我已经有4年多没有问题了,并且这个dll的应用程序不计其数。
尝试部署我的最新作品时,出现以下错误:
System.IO.FileNotFoundException: Could not load file or assembly '***.dll' or one of its dependencies. The specified module could not be found.
因此,对于我曾经编写的每个dll,我总是制作一个简单的表单应用程序来单独测试该dll。 运行该简单应用程序会产生相同的错误。 该dll不会加载或使用以下任何东西:System,System.Data,System.XML。 就目前而言,我没有发现任何错误。
顺便说一下,一切都在开发站上工作。 该问题仅限于部署站。 .Net和必要的可再发行组件,因为我使用C ++进行所有操作,因此已部署并正常工作。
运行FUSLOGVW.exe显示一切正常。
运行Depends.exe说:警告:由于依赖于延迟负载的模块缺少导出功能,至少一个模块的导入无法解析。
我已经尝试重写整个过程。 产生相同的结果。
线索有人吗?
编辑
这是总的错误消息:
See the end of this message for details on invoking \"
just-in-time (JIT) debugging instead of this dialog box.\"
************** Exception Text **************\"
System.IO.FileNotFoundException: Could not load file or assembly 'connectionTo.dll' or one of its dependencies. The specified module could not be found.\"
File name: 'connectionToJobboss32.dll'\"
at TESTConnection.Form1.button1_Click(Object sender, EventArgs e)\"
at System.Windows.Forms.Control.OnClick(EventArgs e)\"
at System.Windows.Forms.Button.OnClick(EventArgs e)\"
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)\"
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)\"
at System.Windows.Forms.Control.WndProc(Message& m)\"
at System.Windows.Forms.ButtonBase.WndProc(Message& m)\"
at System.Windows.Forms.Button.WndProc(Message& m)\"
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)\"
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)\"
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\"
\"
************** Loaded Assemblies **************\"
mscorlib\"
Assembly Version: 4.0.0.0\"
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)\"
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll\"
----------------------------------------\"
TESTConnection\"
Assembly Version: 1.0.3996.18980\"
Win32 Version: \"
CodeBase: file:///C:/Program%20Files%20(x86)/conn/TESTConnection.exe\"
----------------------------------------\"
System.Windows.Forms\"
Assembly Version: 4.0.0.0\"
Win32 Version: 4.0.30319.1 built by: RTMRel\"
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll\"
----------------------------------------\"
System.Drawing\"
Assembly Version: 4.0.0.0\"
Win32 Version: 4.0.30319.1 built by: RTMRel\"
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll\"
----------------------------------------\"
System\"
Assembly Version: 4.0.0.0\"
Win32 Version: 4.0.30319.1 built by: RTMRel\"
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll\"
----------------------------------------\"
事件查看器中没有错误。
或其依赖项之一
这是通常的问题,您看不到带有Fuslogvw.exe的丢失的非托管DLL。 最好的办法是运行SysInternals的ProcMon实用程序。 您会看到它正在搜索DLL,但找不到它。 Dependency Walker中的配置文件模式也可以显示它。
昨天我在dll上遇到了同样的问题,它所引用的只是System,System.Data和System.Xml。 原来平台类型的构建配置没有排列。 该dll是为x86构建的,使用该程序的程序是“ Any CPU”,并且由于我运行的是x64计算机,因此该程序以x64运行,并且x86 dll出现问题。 我不知道这是否是您的问题,只是以为我会提到它作为其他检查对象。
我有同样的问题。 对我来说,这是由计算机上本地IIS服务器中的默认设置引起的。 因此,解决此问题的简单方法是使用内置的Visual Studio开发服务器:)
x64计算机上的较新IIS版本具有默认情况下不允许运行32位应用程序的设置。 要在本地IIS中启用32位应用程序,请在IIS管理器中选择相关的应用程序池,单击“高级设置”,然后将“启用32位应用程序”从False更改为True
我最近遇到了这个问题,该应用程序可以在开发人员计算机上正常运行,并选择其他计算机,但不能在最近安装的计算机上运行。 事实证明,它确实在运行的计算机上安装了Visual C ++ 11 Runtime,而新安装的计算机却没有。 添加可重新分发给应用程序安装程序的Visual C ++ 11运行时可解决此问题 ...
我最近遇到这个问题。 原来,旧的DLL是使用以前的版本(Visual Studio 2008)编译的,并且正在引用该版本的动态运行时库。 我试图在只有.NET 4.0的系统上运行它,但从未安装任何动态运行时库。 解决方案? 我重新编译了DLL以链接静态运行时库。
在事件查看器(EVENTVWR.EXE)中检查您的应用程序错误日志。 它会为您提供有关该错误的更多信息,并且可能会指出问题的真正原因。
这个答案与OP的情况完全无关,对于其他任何人来说都是不太可能的情况,但是以防万一它可能对某人有所帮助...
在我的情况下,我收到“无法加载文件或程序集'System.Windows.Forms,版本= 4.0.0.0 ...”,因为我已经从.Net Framework /中使用ILDAsm.exe和ILAsm.exe反汇编并重新组装了该程序。 SDK版本2。从.Net Framework / SDK版本4切换到ILDAsm.exe和ILAsm.exe可以解决此问题。
(奇怪的是,即使执行我的操作似乎似乎是一个明显的错误,但当使用JetBrains dotPeek检查时,生成的EXE文件无法正常工作确实表明它的目标是.Net4。)
我遇到了同样的问题-一个.dll一直在工作,然后我的计算机崩溃了,之后又出现了“无法加载文件或程序集.... dll”的问题。
两种可能的解决方案:当计算机崩溃时,其中可能存在一些不一致的文件
C:\Users\<yourUserName>\AppData\Local\Temp\Temporary ASP.NET Files
删除该文件夹,重新编译,错误消失了。
一旦我也不得不删除我的packages文件夹(我在其他地方读过)。 允许Visual Studio / nuget安装缺少的软件包(或手动重新安装),然后一切恢复正常。
1)将DLL从“ Externals \\ ffmpeg \\ bin”复制到项目的输出目录(可执行文件保留在其中); 2)确保为x86目标构建了项目(以32位模式运行)。
确定本机DLL具有哪些依赖关系的一种更简单的方法是使用Dependency Walker- http://www.dependencywalker.com/
我分析了本机DLL,发现它依赖于MSVCR120.DLL和MSVCP120.DLL,这两个文件都未安装在我的暂存服务器的System32目录中。 我在登台服务器上安装了C ++运行时,此问题已解决。
通过确保解决方案中的项目具有相同的配置和平台来解决相同的问题(在我的情况下是Debug x64)。 不知何故,VIsual Studio的某些项目缺少了x64,我手动编辑了.sln文件(将配置和平台从正确构建的项目复制到缺少我所需设置的项目中)。 这是其中一个项目的外观:
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Debug|x64.ActiveCfg = Debug|x64
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Debug|x64.Build.0 = Debug|x64
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Release|Any CPU.Build.0 = Release|Any CPU
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Release|x64.ActiveCfg = Release|x64
{1BA29980-EE5D-4476-AFFC-0F177B6C9865}.Release|x64.Build.0 = Release|x64
但是随后,在依赖项中具有Java文件(* .jar)的项目中发生了相同的错误。 我必须手动编辑环境变量才能创建具有该值的记录
C:\\ Program Files \\ Java \\ jre1.8.0_171 \\ bin \\ server
Java的路径,并将其放在Path项的顶部。
在我更新计算机上的Java之前,这已解决了该问题。 我必须在“环境变量”中编辑版本号以匹配更新的文件夹名称。
C:\\ Program Files \\ Java \\ jre1.8.0_181 \\ bin \\ server
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.