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
。
我有一个使用 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
。