我想开发可以读取令牌并执行PDF签名的应用程序。仅供参考,我成功签署了pdf文档,但是在im将Pkcs11Interop版本从3.3.0.0更新到4.1.1.0之后,签署的签名失败了。我曾尝试启用AutoGenerateBindingRedirects,但仍无法签署PDF
期望PDF已成功签名,但出现此错误
System.IO.FileLoadException:无法加载文件或程序集
'Pkcs11Interop,版本= 3.3.0.0,文化=中性,PublicKeyToken =空'
或其依赖项之一。找到的程序集的清单定义
与程序集引用不匹配。 (来自HRESULT的异常:
0x80131040)
Screenshot error
我了解的是,此应用程序正试图调用Pkcs11interop version = 3.3.0.0
但是,在Nuget Repo中已经提到了它的依赖关系。所以应该没事吧?
Pkcs11Interop.PDF
/* App.config */
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<dependentAssembly>
<assemblyIdentity name="Pkcs11Interop" publicKeyToken="c10e9c2d8c006d2a"/>
<bindingRedirect oldVersion="3.3.0.0" newVersion="4.1.1.0"/>
</dependentAssembly>
</configuration>
我必须做些什么来解决此依赖项错误?
最佳答案
我在尝试执行的操作中遇到两个问题:
Pkcs11Interop 3.3.0没有经过严格签名,但是所有较新的版本都有签名。因此,您需要将AFAIK从未签名的程序集重定向到已签名的程序集。
Pkcs11Interop 4.x包含与3.x版本不兼容的API更改,因此,即使您以某种方式使重定向正常工作,Pkcs11Interop.PDF也将无法使用较新版本的Pkcs11Interop。
我可能会更新Pkcs11Interop.PDF以获取较新版本的Pkcs11Interop,但目前还没有ETA =>当前,最好坚持使用Pkcs11Interop 3.3.0。