2

我正在尝试在我的 winforms 应用程序中实现 POS.NET。我要做的是从我的 EPSON TM-T20 收据打印机打印收据。我已经成功构建了一个打印测试应用程序:

    try
    {
        var posExplorer = new PosExplorer();
        DeviceCollection devices = posExplorer.GetDevices((DeviceCompatibilities)Enum.Parse(typeof(DeviceCompatibilities), "Opos", false));
        DeviceInfo deviceInfo = devices[0];

        var posCommon = (PosCommon)posExplorer.CreateInstance(deviceInfo);
        Console.WriteLine("Created instance of device: " + deviceInfo.ServiceObjectName + "\r\n");
        posCommon.Open();
        Console.WriteLine("Opened device: " + deviceInfo.ServiceObjectName + "\r\n");
        var printer = (Microsoft.PointOfService.PosPrinter)posCommon;
        printer.Claim(1000);
        printer.DeviceEnabled = true;
        printer.PrintNormal(PrinterStation.Receipt, text + "\x1B|1lF");
        printer.CutPaper(90);
        printer.Release();
        printer.Close();
    }
    catch (Exception ae)
    {
        Console.WriteLine(ae.Message);
    }

这在 .NET 2.0 应用程序中运行良好。但是当我将代码复制到我的 4.0 项目时,它会在 printer.Open(); 处引发异常;

异常:捕获:“方法打开引发异常。无法创建服务对象实例,或无法获取其 IDispatch 接口。” (Microsoft.PointOfService.PosControlException) 捕获 Microsoft.PointOfService.PosControlException:“方法 Open 引发异常。无法创建服务对象实例,或无法获取其 IDispatch 接口。” 时间:05.08.2013 23:21:17 线程:主线程[6284]

即使我从我的 testproject 构建一个 dll 并在我的主应用程序中引用它,以及当我将它放在我的解决方案中运行 2.0 的单独项目中时,也会发生这种情况。一个 webserch 只提出这可能与 .NET 版本有关。

我在应用程序配置中将supportedRuntime 设置为2.0.50727,但这没有任何作用。非常欢迎对这里有什么问题提出建议。

4

1 回答 1

2

我确实弄清楚了我自己添加的内容:

<runtime>
    <NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>

我的 app.config 成功了!

于 2013-08-09T12:16:07.680 回答