c# - System.IO.FileLoadException:无法加载文件或程序集'Pkcs11Interop,版本 = 3.3.0.0
问题描述
我想开发可以读取令牌并执行 PDF 签名的应用程序。仅供参考,我成功签署了 pdf 文档,但是在我将 Pkcs11Interop 版本从 3.3.0.0 更新到 4.1.1.0 之后,签名变成了失败。我尝试启用 AutoGenerateBindingRedirects 但我仍然无法签署 PDF
期望 PDF 已成功签名,但我收到此错误
System.IO.FileLoadException:无法加载文件或程序集“Pkcs11Interop,Version=3.3.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
我的理解是,这个应用程序试图调用 Pkcs11interop version=3.3.0.0
然而,它已经在 Nuget Repo 中提到了它的依赖关系。所以应该没问题吧?
/* 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 更新 Pkcs11Interop.PDF,但我还没有 ETA => 目前最好还是坚持使用 Pkcs11Interop 3.3.0。
推荐阅读
- reactjs - 在 ReactJS 中使用 Lambda/API 网关
- javascript - 替换为搜索工具/CMD-F 时自动重命名结束 HTML 标记
- discord - 使用 discord.py 检查 text_channel 的 default_role 权限
- php - 如何使用按钮删除 PHP 中的复选框数组?
- javascript - 如何将 MUI 主题颜色添加到内联样式?
- c# - .NET 框架 SQL Server CRUD 使用数据集和数据适配器
- java - Android Studio 聊天功能
- node.js - throw new TypeError('无效的模式配置:' +
- azure - Azure DevOps 条件无法评估 Powershell 设置变量
- python-3.x - 部署在 Microsoft AZUR 上的 djangoAPP 中的错误 500