C#类库在尝试加载另一个库时抛出FileNotFoundException



我尝试用C#连接到一个财政设备
我使用此文档执行以下操作:http://integration.atol.ru/api-en/#connection-到项目
所以基本上我有一个设备的驱动程序安装在我的电脑上(fprt10.dll(;包装器";允许我从C#(Atol.Drivers10.Fptr.dll(使用此驱动程序的程序集。我将此包装作为引用导入到我的项目中
我的类中有以下构造函数:

public MyClass()
{
IFptr fiscalPrinter = new Fptr();
// Here comes several settings to configure connection
fiscalPrinter.applySingleSettings();
fiscalPrinter.open();
fiscalPrinter.beep();
fiscalPrinter.close();
}

为了测试解决方案,我使用了另一个应用程序,该应用程序将我的类库作为依赖项加载。当我调用MyClass的构造函数时,我得到一个异常:

System.IO.FileNotFoundException: Driver not installed
at Atol.Drivers10.Fptr.Fptr.loadDriver(String path)
at Atol.Drivers10.Fptr.Fptr..ctor()
at MySolution.MyClass.MyClass()
...

如果我创建Fptr的实例,其中包含到驱动程序的路径

IFptr fiscalPrinter = new Fptr(@"C:pathfptr10.dll")

我得到了一个略有不同的例外,但我相信问题是一样的:

System.IO.FileNotFoundException: Can`t load driver library "C:pathfptr10.dll"
at Atol.Drivers10.Fptr.Fptr.raiseNotFoundError(String path, Exception reason)
at Atol.Drivers10.Fptr.Fptr.loadDriver(String path)
at Atol.Drivers10.Fptr.Fptr..ctor(String libraryPath)
at MySolution.MyClass.MyClass()
...

但是,当我创建一个控制台应用程序并在其中放入完全相同的代码(两个版本都有路径和没有路径(时,一切都正常:设备会发出哔哔声,没有例外
这种行为的原因是什么?如何解决?

问题可能是以下之一

  • 测试应用程序使用的"目标平台"不同于运行良好的控制台应用程序。每个平台所需的设备驱动程序文件夹可能不同。例如,将目标平台从"任何CPU"更改为"x64"/"x86"(取决于运行它的操作系统类型(将有所帮助
  • 请尝试从管理命令提示符运行测试应用程序。权限问题可能反映为"找不到文件"(而不是"无法加载文件"(
  • 使用程序集绑定查看器工具进一步调试问题
  • 有关程序集加载问题的更多讨论和输入,请参阅"无法加载文件或程序集或其依赖项之一">

谢谢你。

问题出现在测试应用程序中。我使用的驱动程序和操作系统都是x64,但测试应用程序是x86。有了x86驱动程序,一切都可以工作。

最新更新