升级Tesseract至4.1.1后遇强名称程序集加载错误,求解决
解决Tesseract 4.1.1强名称程序集加载错误
这个错误是因为你的项目(或依赖的其他程序集)要求使用强名称签名的程序集,但NuGet官方提供的Tesseract 4.1.1是非强签名版本,导致加载失败。以下是具体解决步骤:
检查项目强签名配置
右键你的项目 → 属性 → 签名选项卡,确认是否勾选了「为程序集签名」。如果是,说明项目本身要求所有引用的程序集必须带强签名。替换为强签名版Tesseract程序集
有两种方式获取强签名版本:- 自行编译源码:
- 拉取Tesseract.NET的源码,在项目属性的签名页面,勾选签名并选择/创建强名称密钥文件(.snk),编译生成带强签名的
Tesseract.dll,替换NuGet安装的版本。
- 拉取Tesseract.NET的源码,在项目属性的签名页面,勾选签名并选择/创建强名称密钥文件(.snk),编译生成带强签名的
- 使用社区维护的强签名NuGet包:
在NuGet包管理器中搜索带有「StrongName」后缀的Tesseract包(注意选择可信的社区包,自行验证兼容性)。
- 自行编译源码:
同步依赖库
确保Tesseract依赖的原生库(如liblept172.dll、libtesseract5.dll等)与强签名版本匹配,将这些文件复制到项目的输出目录(如bin/Debug)。添加程序集绑定重定向(若有版本冲突)
如果项目中存在旧版本Tesseract的引用,在app.config或web.config中添加绑定重定向,确保加载正确的强签名版本:<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Tesseract" publicKeyToken="你的强签名公钥令牌" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>可以用
sn.exe工具查看强签名程序集的公钥令牌:sn -T Tesseract.dll
内容的提问来源于stack exchange,提问作者Ibrahim shaikh
相关产品推荐
相关产品推荐

