坑坑坑坑
Furion 在 2022年07月25日发布 v4.0.0 版本,支持所有历史版本升级到该版本,在此之前已花费了 22 天的时间去测试,去改进。
万万没想到的是,大量的旧项目在这期间都选择了升级,短短一周时间 Nuget 安装量暴增了 30万,但问题也随之而来,由于使用者项目用法千奇百怪,导致一些项目升级之后无法正常运行或出现了比较严重的 Bug。
所以,自那天开始,终日疲于处理各种升级兼容问题,修复了近 20 个 Bug,做了诸多改进,总算实现了真正的无缝升级。
开源感想
![]()
自 2012年注册了 Github 之后,每一年都推出一款开源项目,持续了 10 年,在此期间见证了中国开源乃至国际开源的发展历程,感触良多。
1. 开源是一把双刃刀,处理得当名利双收,处理不妥道德谴责,佛系开源不痛不痒。
2. 做开源最难的不是零到一的过程,而是持续维护的勇气。
3. 开源如同人的脸,好坏一面便知,缺点可能会受到嘲讽批评,优点也会收获赞扬尊重。别担心,他们正在塑造更好的你。
4. 在国内做开源是一件很考验人的耐力活,你会在短时间内因为使用者的各种问题导致情绪复杂多变,仿佛在甲亢甲减这种现代病的边缘徘徊。
5. 当你停止提交代码的次数越多,那么离放弃这个项目不远了。
还有很多很多感想,今天就略写几条~
本期更新
新特性
- [新增]
Furion.Xunit 拓展包,正式实现 Xunit 单元测试完整支持 Furion 063a034e
- [新增]
services.AddMonitorLogging() 日志监视器服务,支持非常灵活的日志操作 81df742
- [新增]
Serve.Run(silence: true) 等一系列强大的静默启动功能 #I5JBSQ #I5J98T 7cced4
- [新增]
SpecificationDocumentBuilder.GetOpenApiGroups() 方法获取底层的规范化接口分组信息 4ff03c5
- [新增]
logger.ScopeContext() 配置日志上下文功能 #I5JC0D
- [新增] 跨域配置
CorsAccessorSettings.SignalRSupport 配置选项,支持配置 SignalR 跨域 #I5JREM
- [新增] 事件总线
UseUtcTimestamp 选项配置,可选择使用 DateTime.UtcNow 还是 DateTime.Now,默认是 DateTime.Now #I5JSEU
- [新增] 规范化文档
[OperationId] 配置,解决自定义 Swagger UI 不能正确显示路由问题 #I5K1IB
- [新增] 远程请求
IHttpDispatchProxy 方式全局拦截支持多态(继承) #I5K8FS
突破性变化
- [新增]
Furion.Xunit 拓展包,正式实现 Xunit 单元测试完整支持 Furion 063a034e
- [移除]
Furion.Extras.DatabaseAccessor.SqlSugar 拓展插件中的 [SqlSugarUnitOfWork] 工作单元特性,将使用通用工作单元替换,查看最新实现文档
- [移除]
Inject.Create() 方法,再也不需要了,框架提供了无敌强大的 Serve.Run() 静默启动方式 200848e
- [调整]
Serve.Run 的 ConfigureConfiguration 方法参数,由 configuration => {} 改为 (environment, configuration) => {} 83c97bb
问题修复
- [修复]
[LoggingMonitor] 异常消息日志级别为 Information 错误问题 ab46cdf
- [修复] 新版本日志组件频繁提示文件占用问题,将文件独占锁改为共享锁 #I5J3S6
- [修复] 配置数据库日志读写器为
EFCore 时控制台出现无限打印问题 #I5J474
- [修复]
[LoggingMonitor] 针对 byte[] 类型参数输出过大问题 5380f35
- [修复] 友好异常和规范化结果丢失了原始
ErrorCode 问题 #I5IX2R
- [修复] 新版本日志组件自定义数据库读写器注入
IRepository 仓储导致死循环问题 #I5IX2R
- [修复]
Mvc 默认手动验证和 Furion 全局验证冲突问题 2a06c39
- [修复]
Serve.Run() 模式不支持 SuperSocket 第三方包问题,原生是支持的。186ca0a
- [修复]
SignalR 跨域错误问题 #I5JREM
- [修复]
[LoggingMonitor] 将 Oops.Oh 和 Oops.Bah 记录到了错误日志中,默认应该是 Information 且提供可配置 #I5JZ1H
- [修复] 自定义
Swagger UI 之后个别 UI 要求必须配置 operationId,否则出现 guid 序号 #I5K1IB
- [修复] 主动抛出
NotFoundResult 和 NotFoundObjectResult 无效问题 #I5KALZ
- [修复]
[LoggingMonitor] 解析方法参数但前端未传入时出现错误问题 #I5KC5P
- [修复]
[LoggingMonitor] 无法序列化 IQueryable 返回值问题 #I5KJD1
- [修复]
[LoggingMonitor] 不能记录全局验证错误问题 b44087d
- [修复]
[LoggingMonitor] 存在注册顺序差异问题 b44087d