.NET Framework 4.5.1中Lucene.NET 4.8.0-beta000016加载异常求助
解决Lucene.NET版本不匹配的FileLoadException问题
问题原因
你安装的是Lucene.NET 4.8.0-beta000016,但应用启动时尝试加载版本为4.0.0.0的程序集,这是因为Lucene.NET强命名版本存在版本号映射问题,或是项目里残留了旧的引用配置。
解决步骤
检查并更新项目引用
打开项目引用列表,确认所有Lucene.NET相关引用都是4.8.0-beta000016版本,删掉任何旧版本的引用;如果是NuGet安装的,去NuGet包管理器里确认版本正确,没有遗留的旧版本依赖。添加程序集绑定重定向(最有效)
在项目的App.config或Web.config里添加绑定重定向配置,把对4.0.0.0版本的请求转去实际安装的4.8.0.0版本:<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Lucene.Net" publicKeyToken="85089178b9ac3181" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.8.0.0" newVersion="4.8.0.0" /> </dependentAssembly> <!-- 若有Lucene.Net.Analysis.Common等依赖组件,同样要加对应重定向 --> <dependentAssembly> <assemblyIdentity name="Lucene.Net.Analysis.Common" publicKeyToken="85089178b9ac3181" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.8.0.0" newVersion="4.8.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>注意:
newVersion要和你安装的Lucene.NET版本号完全一致,beta版本对应的内部版本号是4.8.0.0。清理并重新生成项目
右键项目选「清理」,删掉旧的编译输出文件;再选「重新生成」,确保新程序集被正确复制到输出目录。检查输出目录程序集
打开项目输出文件夹(一般是bin/Debug或bin/Release),确认里面的Lucene.NET.dll版本是4.8.0.0,没有旧版本dll残留。排查第三方依赖
如果项目引用了依赖Lucene.NET的第三方库,确认这些库是否兼容4.8.0-beta版本。要是第三方库依赖旧版Lucene.NET,要么升级第三方库,要么调整绑定重定向适配。
内容的提问来源于stack exchange,提问作者Ivan Petkov
相关产品推荐
相关产品推荐

