我们正在为VB.NET 3.5中的Kofax Capture 9.0 / 10.0开发验证脚本。 我们知道如何使用管理模块创建脚本,以及如何使其运行。
问题是我们需要引用位于远程计算机上的dll。 (GAC不可选)这个dll包含我们在每个验证脚本中需要的抽象类。
即使在本地放置dll(复制本地),验证模块(index.exe)也会立即抛出“无法找到引用”异常,即使项目编译完美。
我想基本问题归结为:我们在哪里放置dll,以便验证模块找到它们?
答案 0 :(得分:1)
简单的答案是将dll放在与应用程序相同的文件夹中,因为这是.NET在尝试查找时将调查的地方之一。验证模块从Capture bin目录运行,该目录类似于“C:\ Program Files(x86)\ Kofax \ CaptureSS \ ServLib \ Bin \”。这需要使用验证在每个客户端上完成。
如果你有一个更复杂的场景,你可以看看实现AppDomain.AssemblyResolve Event并使用Assembly.LoadFile从自定义位置获取程序集,但使用bin路径不那么复杂。
如果您最终遇到问题,可以使用Assembly Binding Log Viewer (Fuslogvw.exe)进行排查,这可以告诉您有关为什么程序集无法加载的详细信息以及.NET尝试搜索的位置它。装配加载可能由于路径以外的原因而失败。
有关.NET如何加载程序集的更多详细信息,请参阅以下内容:
答案 1 :(得分:1)
我们找到了一个解决方案:将所有库文件添加为项目的“链接”。 (添加 - >现有文件 - > “添加”旁边的小箭头 - >添加为链接) 这可确保在构建项目时编译文件。 Kofax验证模块现在可以找到文件,而在引用文件时则不能。为什么它不能,仍然是个谜......