npoi与memcached中的ICSharpCode.SharpZipLib版本冲突的解决方案
项目中一直使用NPOI与memcached,一直相安无事,但是最近升级了npoi到最新版本,发生了ICSharpCode.SharpZipLib的版本冲突问题.
因为此前一直使用的是NPOI的1.x的版本,用的SharpZipLib是0.84版本,而升级到最新版本以后,SharpZipLib的版本变成了0.86版本.
但是memcached的却没有最新版本供使用,而只能使用0.84的版本.
那么问题就来了,该如何解决同一个dll不同版本的冲突问题呢?
目前可以在gitbub上获取到最新版本的npoi的源码,so我们把源码down下来重新修改为0.84的版本就可以了啊.
想法是很好的,但是down下源码编译的时候,却发现源码里缺少文件导致编译不成功.
so,文的不行,那就只能来武的啦.
拿出ILDSM反编译出NPOI的il代码,然后直接修改引用为0.84版本.
{ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 4:0:0:0 } .assembly extern System.Drawing { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: .ver 4:0:0:0 } .assembly extern System.Windows.Forms { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 4:0:0:0
} .assembly extern ICSharpCode.SharpZipLib { .publickeytoken = (1B 03 E6 AC F1 16 4F 73 ) // ......Os .ver 0:84:0:0 } .assembly extern mscorlib as mscorlib_6 { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 2:0:0:0 } .assembly extern System.Configuration { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: .ver 4:0:0:0 } http://blog.csdn.net/a497785609/article/details/8662295
然后就很简单啦,因为NPOI是强签名过的文件,我们需要把源码中的签名文件
npoi.snk拿出,然后通过ilasm反编译为dll即可.
同样还需要修改的文件为NPOI.OpenXml4Net.dll.
此处,考虑到大家在项目中同时使用这2个第三方库的会有很多,提供下我已经修改好的dll给大家下载使用.
另外一种解决方案:
http://blog.csdn.net/lilong_herry/article/details/43059643
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)