npoi与memcached中的ICSharpCode.SharpZipLib版本冲突的解决方案

Posted 隨风.NET

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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给大家下载使用.

 

下载文件点我

 

以上是关于npoi与memcached中的ICSharpCode.SharpZipLib版本冲突的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

NPOI+ExcelReport

基于NPOI导出Excel

C# NPOI 导入与导出Excel文档 兼容xlsx, xls(xf13中已经引用了xlsx的npoi)

NPOI 中的公式列的值的获取

如何在 NPOI - Docx 中添加与默认页脚不同的首页页脚?

#yyds干货盘点# NPOI在Word中的简单用法汇总