【发布时间】:2015-10-03 01:04:31
【问题描述】:
我有一个使用 AutoItX 进行自动化的 C# 应用程序。此应用程序在我使用 Microsoft Visual Studio 2013 第 3 版编译的 Windows 8.1 x64 环境中运行良好。
我将应用程序代码的副本推送到 bitbucket 存储库,并将其克隆到运行 Windows 7 x64 的计算机上。 AutoItX 版本 3.14.2 已安装并选择了 32 位调用。该应用程序是使用 Visual Studio 2013 版本 4 编译的。
应用编译正常,但第一次使用 AutoIt 功能导致错误:
An unhandled exception of type 'System.DllNotFoundException' occurred in AutoItX3.Assembly.dll
我尝试了以下步骤。在每个步骤之后都对应用进行了测试
-
尝试使用 regsrv32 手动注册 .dll
regsrv32 "C:\Program Files (x86)\AutoIt3\AutoItX\AutoItX3.dll"
-
卸载 VisualStudio 2013 R4 并尝试重新安装 VisualStudio 2013 R3 {R3 安装失败,因为它需要 Internet Explorer 版本 10 并且此计算机上已安装版本 11},因此重新安装了 R4
卸载 AutoIt 并重新安装,选择 64 位库首选项。使用 x64 平台选项编译应用程序
卸载 AutoIt 并使用 32 位库首选项重新安装 使用 X86 平台选项编译应用程序
手动将AutoItX3.dll复制到C:\windows\System32目录
手动将 AutoItX3_x64.dll 复制到 c:\Windows\SysWOW64 目录。为 x64 平台编译应用程序
清除计算机并重新安装 Windows 7、AutoIt(32 位首选项)、Visual Studio 2013 R4
已安装 AutoIt v14
安装了 AutoIt v15 测试版
执行 Windows 更新 - 已安装 213 个更新 (!)
已安装 Internet Explorer v11
执行 Windows 更新 - 已安装 4 个更新
安装了适用于 Windows 8 系统的 AutoIt 3.10.2 版
我会很感激有关下一步尝试的建议。我可能遗漏了一些非常基本的东西,但我找不到解决方案
【问题讨论】:
-
我必须说你提出了我在 SO 上见过的最好的精心设计的问题之一。我会得到 Dependency Walker(谷歌)并在
AutoItX3.Assembly.dll上使用它。它应该列出所有需要的 dll,并告诉您缺少哪些。 -
感谢史蒂夫的建议。我下载了 Dependency Walker。 AutoItX.dll 和 AutoItX.Assembly 都显示了许多丢失的依赖文件……大约有十几个 AutoItX.dll。我不确定从哪里开始添加那些缺少的依赖项。我进行了 Windows 更新并进行了 213(!)次更新。该应用程序仍然失败。我安装了IE11。该应用程序仍然失败。我希望我不需要单独寻找和安装每个 dll。 AutoIt 与 windows 7 不兼容吗?
-
@Darwinlcesurfer - 我认为您可以将所有 DLL 复制到可执行文件的目录中,它们就会被找到。
-
我尝试安装与 Windows 8.1 系统 (3.10.2) 相同版本的 AutoIt。结果相同。 Dependency walker 显示 9 个文件的缺失文件,包括 DCOMP.DLL 和 GPSVC.DLL。这很奇怪,因为 gpsvc.dll 可以在 C:\windows\System32 中找到。我还做了 4 次 Windows 更新。
-
@Darwinlcesurfer 你可能已经检查过了,但是....你没有混淆 32 位和 64 位版本,是吗?版本号看起来正确,但动态链接将失败。
标签: c# dll automation autoit-c#-wrapper