UWP不支持winscard.dll(使用pcsc-sharp库的System.TypeLoadException)

时间:2018-03-14 15:16:42

标签: .net uwp dllimport pcsc

尝试在UWP应用程序中使用 pcsc-sharp 库的v4 https://github.com/danm-de/pcsc-sharp

我理解v4, pcsc-sharp 现在是.net标准2.0,UWP支持。

好消息是我们能够传输CommandApdu并读取ISO7816智能卡的公共数据。 坏消息是,这似乎仅在调试模式下有效,并且在发布模式下运行时,我们收到以下错误:

例外详情 {System.TypeLoadException:未解析的P / Invoke方法' winscard.dll!SCardEstablishContext'从这种方法。请在构建警告中查找此方法以获取更多详细信息。 制作警告 警告MCG:警告MCG0007:未解决的P / Invoke方法' winscard.dll!SCardSetAttrib' for method&System; System.Int32 PCSC.Interop.Windows.WinSCardAPI.SCardSetAttrib(System.IntPtr,System.Int32,System.Byte [],System.Int32)'。调用此方法将在运行时抛出异常。请确保P / Invoke指向UWP应用程序中允许的Windows API,或者作为程序包一部分的本机DLL。如果由于某种原因您的P / Invoke不满足这些要求,请使用[DllImport(ExactSpelling = true)表示您了解使用非UWP API的含义。

你怎么读到这个?我想在这里做不可能吗?

  

P.S:我试图在调试模式下启用.net本机工具链。多数民众赞成我如何获得这些异常细节。我也尝试在x64和x86两种模式下运行,但它无论如何都可以运行。只有在项目属性中未检查.net本机工具链时,它才能在调试模式下工作。

     

根据错误我们必须做 DllImport 来调用这些方法,但是在 pcsc-sharp 的代码中我们已经拥有了所有那些Dll导入方法的东西我们试着打电话。所以它仍然没有给我们这些错误。

github问题的链接:https://github.com/danm-de/pcsc-sharp/issues/70

1 个答案:

答案 0 :(得分:1)

不幸的是,UWP目前不支持WinScard.dll。如果SmartCard API中缺少某些功能,您可以通过UserVoice或反馈中心发送反馈。