NPOI與Crystal report 13.0關於ICSharpCode.SharpZipLib控件版本衝突的解決方法

公司原來的系統用了Crystal report 13.0,它關聯使用ICSharpCode.SharpZipLib.dll (壓縮控件)的版本為0.85.1.271;後來因需要新增加 NPOI2.3控件,它關聯使用了ICSharpCode.SharpZipLib.dll 的版本為 高版本0.86,導致Crystal report 不能正常使用。
即遇到了棘手的同一項目下兩個不同版本的同一控件。
解決方案:修改NPOI的source code, 將ICSharpCode.SharpZipLib.dll的版本降為0.85.1.271 一致。

步驟:

  1. 下載NPOI source code(https://github.com/nissl-lab/npoi/releases),因我們舊系統是用 .net framework 2.0 , 所以選擇的是 NPOI2.2版本,
  2. 打开 Source code , solution --> vs2010–> OOXML.sln
    修改以下:
    1)替換各項目中引用的 ICSharpCode.SharpZipLib.dll 為0.85版本
    2)修改以下
    namespace NPOI.OpenXml4Net.OPC
    {
    public enum CompressionOption : int
    {
    Fast = 1,//Deflater.BEST_SPEED,
    Maximum =9,// Deflater.BEST_COMPRESSION,
    Normal = -1,//Deflater.DEFAULT_COMPRESSION,
    NotCompressed =0// Deflater.NO_COMPRESSION
    }
    }
    3)修改以下:NPOI.OpenXml4Net.OPC.ZipPackage
    將报错的代码行zos.UseZip64 = UseZip64.Off;注释
  3. 重新編譯生成 NPOI dll

將新生成 NPOI dll 引用到 系統中。

你可能感兴趣的:(基础知识,c#)