【发布时间】:2019-05-31 03:19:52
【问题描述】:
我想开发可以读取令牌并执行 PDF 签名的应用程序。仅供参考,我成功签署了 pdf 文档,但是在我将 Pkcs11Interop 版本从 3.3.0.0 更新到 4.1.1.0 之后,签名变成了失败。我已尝试启用 AutoGenerateBindingRedirects,但我仍然无法签署 PDF
预计 PDF 已成功签名,但我收到此错误
System.IO.FileLoadException:无法加载文件或程序集 'Pkcs11Interop,版本 = 3.3.0.0,文化 = 中性,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>
我必须做些什么来解决这个依赖错误?
【问题讨论】:
-
你尝试过重新编译吗?给我们看看
App.config文件?有文字图片吗? -
我尝试清理和构建,但该错误仍然出现。已经在我的帖子上添加 App.config @vasily.sib 先生
-
不应该是
<bindingRedirect oldVersion="3.3.0.0" newVersion="4.1.1.0"/>吗? (版本号中额外的.0) -
它没有工作先生 :((
-
关闭 Visual Studio,然后使用文本编辑器(不是 Visual Studio)从 .csproj 文件中删除对该程序集的所有引用。删除项目文件夹中的bin和obj文件夹,然后打开VS重新添加对DLL的引用。
标签: c# pkcs#11 pkcs11interop