winscard.dll UWP 不支持(System.TypeLoadException 使用 pcsc-sharp 库)
winscard.dll not supported for UWP (System.TypeLoadException using pcsc-sharp library)
我正在尝试在 UWP 应用程序中使用 pcsc-sharp 库的 v4
https://github.com/danm-de/pcsc-sharp
我了解 v4,pcsc-sharp 现在在 UWP 支持的 .net 标准 2.0 上。
好消息是我们能够传输 CommandApdu 并读取 public ISO7816 智能卡的数据。坏消息是,这似乎只在调试模式下有效,而在发布模式下 运行 时,我们会收到以下错误:
Exception Details
{System.TypeLoadException: Unresolved P/Invoke method 'winscard.dll!SCardEstablishContext' from this method. Please look for this method in build warnings for more details.
Build warnings
Warning MCG : warning MCG0007: Unresolved P/Invoke method 'winscard.dll!SCardSetAttrib' for method 'System.Int32 PCSC.Interop.Windows.WinSCardAPI.SCardSetAttrib(System.IntPtr, System.Int32, System.Byte[], System.Int32)'. Calling this method would throw exception at runtime.
Please make sure the P/Invoke either points to a Windows API allowed in UWP applications, or a native DLL that is part of the package. If for some reason your P/Invoke does not satisfy those requirements, please use [DllImport(ExactSpelling=true) to indicate that you understand the implications of using non-UWP APIs.
你怎么看这个?我想在这里做不可能的事吗?
顺便说一下,我尝试在调试模式下启用 .net 本机工具链。这就是我如何获得这些异常详细信息的方式。我还尝试在 x64 和 x86 模式下使用 运行,但无论哪种方式都无法正常工作。仅当未在项目属性中选中 .net 本机工具链时,它才在调试模式下工作。
根据错误,我们必须执行 DllImport 来调用这些方法,但是在 pcsc-sharp 的代码中我们已经有了所有这些 Dll 都在我们尝试调用的方法上导入内容。所以为什么它仍然给我们这些错误是没有意义的。
遗憾的是,WinScard.dll
目前不支持 UWP。如果 SmartCard
API 中缺少某些功能,您可以通过 UserVoice 或反馈中心发送反馈。
我正在尝试在 UWP 应用程序中使用 pcsc-sharp 库的 v4 https://github.com/danm-de/pcsc-sharp
我了解 v4,pcsc-sharp 现在在 UWP 支持的 .net 标准 2.0 上。
好消息是我们能够传输 CommandApdu 并读取 public ISO7816 智能卡的数据。坏消息是,这似乎只在调试模式下有效,而在发布模式下 运行 时,我们会收到以下错误:
Exception Details
{System.TypeLoadException: Unresolved P/Invoke method 'winscard.dll!SCardEstablishContext' from this method. Please look for this method in build warnings for more details.
Build warnings
Warning MCG : warning MCG0007: Unresolved P/Invoke method 'winscard.dll!SCardSetAttrib' for method 'System.Int32 PCSC.Interop.Windows.WinSCardAPI.SCardSetAttrib(System.IntPtr, System.Int32, System.Byte[], System.Int32)'. Calling this method would throw exception at runtime.
Please make sure the P/Invoke either points to a Windows API allowed in UWP applications, or a native DLL that is part of the package. If for some reason your P/Invoke does not satisfy those requirements, please use [DllImport(ExactSpelling=true) to indicate that you understand the implications of using non-UWP APIs.
你怎么看这个?我想在这里做不可能的事吗?
顺便说一下,我尝试在调试模式下启用 .net 本机工具链。这就是我如何获得这些异常详细信息的方式。我还尝试在 x64 和 x86 模式下使用 运行,但无论哪种方式都无法正常工作。仅当未在项目属性中选中 .net 本机工具链时,它才在调试模式下工作。
根据错误,我们必须执行 DllImport 来调用这些方法,但是在 pcsc-sharp 的代码中我们已经有了所有这些 Dll 都在我们尝试调用的方法上导入内容。所以为什么它仍然给我们这些错误是没有意义的。
遗憾的是,WinScard.dll
目前不支持 UWP。如果 SmartCard
API 中缺少某些功能,您可以通过 UserVoice 或反馈中心发送反馈。