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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM