C# System.DllNotFoundException

C# System.DllNotFoundException

我有一个使用 cryptlex (cryptlex.com) 提供的产品激活系统的简单应用程序。

该程序在我的计算机上运行正常,但是当我尝试 运行 另一台计算机上的程序时,它 returns 出现此错误:

我已经确保 dll 位于可执行文件夹中并且一切正常。

当我删除 cryptlex 的所有部分时,该程序在任何机器 (x86-x64) 上都能完美运行

我使用 depencywalker 检查错误并在使用 cryptlex 的可执行文件中发现了这两个:

Windows 7 个 64 位, .NET 版本:4.0

当 DLL 存在时,您是否检查过比特率? 大多数 C# 项目默认针对 Any CPU 构建 - 如果 DLL 特定于比特率(即 x86 或 x64),则可能是程序在终端机器(通常是 x86)上选择了错误的比特率,但在你的机器(x64)。这通常最好通过构建不同的 x86 和 x64 版本来解决;它比较混乱,但只有 .NET 本身擅长使用 Any CPU 范式。

异常应该详细说明具体是什么 DLL 没有找到 - 也许仔细看看?

缺少 GPSVC 和 IESHIMS 应该 不是问题;正如沙漏所示,无论如何它们都是延迟依赖。

您可以使用Process Monitor来记录程序的所有文件活动。为您的可执行文件设置过滤器。重现错误后,将日志另存为 XML 文件。

然后运行 ProcMon Analyzer(注意:我是它的作者)。它将分析文件并给出未找到的 DLL 列表。

您也可以手动执行此操作,但请注意,某些 DLL 可能一开始找不到,但后来在 %PATH% 环境变量等中查找时会找到。该工具将删除所有具有先是 PATH NOT FOUND,然后是 SUCCESS