|
1 | 1 | # Release Log |
2 | 2 |
|
3 | | -## 2.8.3 |
4 | | -**2025.12.24** |
| 3 | +## 2.8.5 |
| 4 | +**2026.06.21** |
| 5 | + |
| 6 | +### 性能 |
| 7 | +- **图片导出大幅提速**:1000 张图片约 40s → 3s(约 13 倍)。从底层 EPPlus(SHA1 静态化、`wsDr` XPath 缓存、`Drawings.Preallocate`)到导出入口(按实际 drawing 数预分配、临时关闭 `DoAdjustDrawings`、`SKCodec` 跳过解码直接写入、同 URL 去重 + 并行下载)整条链路优化。 |
| 8 | +- Linux 下 AutoFit 字体测量加速:预加载 `SKTypeface` 到缓存,避免每个单元格都调用 fontconfig。 |
| 9 | + |
| 10 | +### 修复 |
| 11 | +- #549 Excel 缺少列时抛空指针异常,改为返回空值并生成错误信息 |
| 12 | +- #617 多列表模板导出数据错乱(`updateCellWriters` 过滤条件 `RawRowStart` → `NewRowStart`) |
| 13 | +- #585 CSV 导入空单元格映射为 null |
| 14 | +- #582 模板导入空行导致错误行号偏移 |
| 15 | +- #588 新增 `DateOnly` / `DateOnly?` 类型导入支持 |
| 16 | +- 图片下载无限挂起:`WebClient` → `HttpClient` + 30s 超时 |
| 17 | +- 图片下载并发回归:上一条改动把 `WebClient`(per-call 新建)换成共享 `static HttpClient`,xUnit 跨 class 并行测试时并发下载偶发失败、图片静默丢失;改为 per-call `using new HttpClient` 隔离并发,超时保留 |
| 18 | +- 导入 Stream 泄漏:改由 helper 托管生命周期,移除冗余 `GC.Collect` |
| 19 | +- `DoAdjustDrawings` 状态泄漏:EPPlus 内四处临时置 `false` 未用 try/finally 恢复,异常后 flag 永久卡死,导致后续 `Row.Height` / `Column.Width` setter 静默失效 |
| 20 | +- macOS ARM64 PDF 导出崩溃(JSC JIT 的 W^X 冲突):加载原生库前设 `JSC_useJIT=0` |
| 21 | +- netstandard2.0/2.1 编译失败 |
| 22 | + |
| 23 | +### 新增 |
| 24 | +- PDF 原生库抽象层:`PdfEnvironmentInfo` / `PdfExportOptions` / `IPdfNativeLibraryService.CheckEnvironment()` / `AddMagicodesPdfExporter()` DI 扩展,加载失败统一包装为 `InvalidOperationException` |
| 25 | +- macOS arm64 静态 wkhtmltopdf dylib(Qt 5.15 + QtWebKit 静态链接,arm64→x64 fallback) |
| 26 | + |
| 27 | +### 依赖 |
| 28 | +- NPOI 2.5.5 → 2.8.0,移除 `System.Drawing.Common`,SharpZipLib 1.4.2;消除 #554 / #557 / #561 传递依赖冲突与 #577 漏洞 |
| 29 | +- `System.Linq.Dynamic.Core` 1.7.2、`Newtonsoft.Json` 统一 13.0.3 |
| 30 | +- 引入 CPM(`Directory.Packages.props`)集中管理包版本,修掉历史版本漂移 |
| 31 | +- 修复 NPOI 传递依赖 CVE:pin `System.Text.Encodings.Web` / `System.Security.Cryptography.Xml` |
| 32 | + |
| 33 | +### 目标框架 |
| 34 | +- 移除 net5.0 / netcoreapp3.1 |
| 35 | +- EPPlusTest / Benchmarks 升至 net8.0 |
| 36 | + |
| 37 | +### CI |
| 38 | +- CI 改造为多平台矩阵(ubuntu/windows/macos)+ 新增 net9.0;新增兼容性策略文档与 `global.json` |
| 39 | + |
| 40 | +### 测试 |
| 41 | +- 新增图片导出性能基准(500/1000/2000 行)与 `DrawingsFlush` / `ImageOptimization` 回归测试 |
| 42 | + |
| 43 | +## 2.8.4 |
| 44 | +**2026.05.30** |
5 | 45 |
|
6 | 46 | - 全面支持 .NET 10.0(LTS 版本) |
7 | 47 | - 更新所有核心库项目以支持 .NET 10.0 目标框架 |
|
10 | 50 | - 优化项目依赖包版本管理,统一 .NET 6.0+ 框架的包版本 |
11 | 51 |
|
12 | 52 | ## 2.8.2 |
13 | | -**2025.12.16** |
| 53 | +**2025.12.24** |
14 | 54 |
|
15 | 55 | - 升级 SkiaSharp 包从 2.88.6 到 3.119.1 |
16 | 56 | - 修复 SkiaSharp 3.x 中废弃的 API 使用问题,将 SKPaint.MeasureText 替换为 SKFont.MeasureText |
|
0 commit comments