Skip to content

Dev 1.1#59

Open
li761747705 wants to merge 34 commits into
dotnet-easy:mainfrom
li761747705:dev-1.1
Open

Dev 1.1#59
li761747705 wants to merge 34 commits into
dotnet-easy:mainfrom
li761747705:dev-1.1

Conversation

@li761747705
Copy link
Copy Markdown

完善分支的代码

- 重命名所有 NuGet 包为 Joce.EasyTool.* 前缀
  - EasyTool.Core → Joce.EasyTool.Core
  - EasyTool.EmitMapper → Joce.EasyTool.EmitMapper
  - EasyTool.Web → Joce.EasyTool.Web
  - EasyTool.NPOI → Joce.EasyTool.NPOI
  - EasyTool.Image → Joce.EasyTool.Image

- 更新所有项目版本号至 2026.0108.1

- 完善 NuGet 打包配置
  - 为 EasyTool.Web 和 EasyTool.NPOI 添加完整的包元数据
  - 统一所有项目的 PackageId、Authors、RepositoryUrl 等配置
## 主要更改

### 标记 Obsolete 的方法 (~140+ 个)
将简单包装 .NET 内置 API 的方法标记为 [Obsolete],引导开发者直接使用内置 API:

**IO/网络/运行时类:**
- IoUtil.cs: 8 个 (File.ReadAllLines, ReadAllText, WriteAllLines 等)
- URLUtil.cs: 5 个 (ExtractDomain, ExtractPath, ExtractQueryString 等)
- RuntimeUtil.cs: 2 个 (GetDotNetVersion, GetOSVersion)
- RegexUtil.cs: 2 个 (IsMatch, Replace)
- TimerUtil.cs: 2 个 (StartNew, Wait)
- TimestampUtil.cs: 6 个 (时间戳转换方法)

**反射/类型/枚举类:**
- TypeUtil.cs: 15 个 (IsEnum, GetProperties, GetMethods 等)
- ReflectUtil.cs: 10 个 (GetType, GetAttribute, GetAssembly 等)
- EnumUtil.cs: 7 个 (GetNames, GetValues, Parse 等)
- ClassUtil.cs: 部分方法

**集合/列表/队列/栈类:**
- ListUtil.cs: 13 个 (IndexOf, AddRange, ForEach, Sort 等)
- QueueUtil.cs: 7 个 (Enqueue, Dequeue, Peek, Contains 等)
- StackUtil.cs: 7 个 (Push, Pop, Peek, Contains 等)
- LinkedListUtil.cs: 8 个 (AddFirst, AddLast, Remove 等)
- IteratorUtil.cs: 7 个 (Filter, Map, Take, Skip 等 LINQ 包装)

**工具类:**
- ArrayUtil.cs: 部分方法
- StrUtil.cs: 部分方法
- HexUtil.cs: 部分方法
- ObjectUtil.cs: 多个方法
- FileUtil.cs: 部分方法
- EnvUtil.cs: 10 个
- EscapeUtil.cs: 5 个
- ProcessUtil.cs: 7 个
- DLLUtil.cs: 5 个
- MathUtil.cs: 1 个 (Average)
- NumberUtil.cs: 1 个 (DecimalFormat)
- Base64Util.cs: 2 个 (Encode, Decode)

### 新增扩展类文件
添加了多个独立的扩展类文件:
- ArrayExtension.cs - 数组扩展
- ByteExtension.cs - 字节扩展
- ConvertExtension.cs - 转换扩展
- EnumExtension.cs - 枚举扩展
- ExceptionExtension.cs - 异常扩展
- FileSystemExtension.cs - 文件系统扩展
- StreamExtension.cs - 流扩展
- PropertyInfoExtension.cs - 属性信息扩展
- StringBuilderExtension.cs - 字符串构建器扩展
- StringComparisonExtension.cs - 字符串比较扩展
- TaskExtension.cs - 任务扩展
- TypeExtension.cs - 类型扩展
- GuidExtension.cs - GUID 扩展
- ObjectExtension.cs - 对象扩展
- DelegateExtension.cs - 委托扩展
- ColorExtension.cs - 颜色扩展

### 删除文件
- Extension.Convert.cs - 合并到 ConvertExtension.cs

## 保持不变的文件
以下文件包含自定义业务逻辑,所有方法均保留:
- IdUtil.cs (UUID/雪花ID生成)
- AesUtil.cs, DesUtil.cs (加密算法)
- Base32Util.cs, Base62Util.cs (编码算法)
- ImgUtil.cs (图像处理)
- NPOIUtil.cs (Excel 处理)
- DateTimeUtil.cs, LunarCalendarUtil.cs (日期处理)
- ZipUtil.cs, HashUtil.cs (压缩/哈希)
- 等等...

## 兼容性
- 所有标记的方法仍可正常使用
- 使用 `false` 参数,仅警告不报错
- 保留向后兼容性

编译状态: ✅ 0 错误, 458 警告
- 删除 28 个冗余工具类(IoUtil, ObjectUtil, ArrayUtil 等)
- 合并功能到对应扩展方法类(ObjectExtension, ArrayExtension 等)
- 优化 StrUtil 和 PageUtil 中的字符串拼接,改用 StringBuilder
- 移动 HashUtil, HexUtil, RandomUtil, RegexUtil, URLUtil 到正确类别
- 标记 DateTimeExtension 中 11 个包装方法为 Obsolete
- 删除 CloneCategory 目录,功能已整合到 ObjectExtension

减少约 4000+ 行冗余代码,提升整体代码质量和性能
- 在AesUtil中新增字节数组版本的加密解密方法
- 在DesUtil中修复IV设置错误并添加字节数组版本方法
- 将多个工具类从Extension命名空间迁移到对应的功能分类命名空间
- 重命名CreditCodeUtil和DesensitizedUtil为静态类
- 添加新的SystemCategory.EnvUtil工具类
- 修复EncodingUtil中BASE32编码的位移计算错误
- 更新RandomUtil引用路径解决依赖问题
- 标记ConvertExtension中的ToHex方法为过时并提供替代方案
- 将 PropertyInfoExtension 和 TypeExtension 移动到 ReflectCategory,修正命名空间
- 将 StrExtension 移动到 TextCategory 并重命名为 StringExtension
- 修复 HashUtil 命名空间为 EasyTool.CodeCategory
- 改进代码组织,将相关功能归类到对应目录
- 将 CreditCodeUtil 移动到 SecurityCategory(业务验证工具)
- 将 StringComparisonExtension 移动到 TextCategory(字符串相关)
- 减少 ToolCategory 中不相关的文件数量
- 改进代码组织的逻辑性
- 将 IEnumerableExtensions.cs 移动到 CollectionsCategory
- 删除空的 IEnumerableCategory 文件夹
- 统一集合相关扩展到同一分类目录
- 将 SimpleMapExtension 从 ToolCategory 移动到 DataCategory
- 将 IdUtil 从 ToolCategory 移动到 DataCategory
- 将 CreditCodeUtil 从 SecurityCategory 移动到 DataCategory
- DataCategory 现在包含 4 个文件:PageUtil、SimpleMapExtension、IdUtil、CreditCodeUtil
- 修复测试项目的命名空间引用
- 将 StringBuilderExtension 从 ToolCategory 移动到 TextCategory
- 将 NumberExtension 从 ConvertCategory 移动到 MathCategory
- 修复 FileSystemExtension 对 ToFileSize 的命名空间引用(ConvertCategory → MathCategory)
- MathCategory 现在包含 4 个文件:MathUtil、PredictUtil、RandomUtil、NumberExtension
- TextCategory 现在包含 7 个文件
- 创建新的 ImageCategory,将 ColorExtension 从 ConvertCategory 移入
- 将 EmojiUtil 从 EmojiCategory 移动到 TextCategory(表情符号是文本处理)
- 将 DesensitizedUtil 从 SecurityCategory 移动到 TextCategory(脱敏是文本处理)
- 删除空的 EmojiCategory 和 SecurityCategory 文件夹
- ImageCategory 现在包含 ColorExtension
- TextCategory 现在包含 9 个文件(包含表情和脱敏)
- ConvertCategory 减少到 3 个文件
- 标记 ByteExtension.ToHex/ToHexLower 为 Obsolete(与 HexUtil 重复)
- 创建 IdentifierCategory,将 IdUtil 从 DataCategory 移入
- 创建 BusinessCategory,将 CreditCodeUtil 从 DataCategory 移入
- 将 SimpleMapExtension 移回 ToolCategory
- 重命名 ImageCategory 为 ColorCategory(更准确)
- 修复所有命名空间引用
- 修复测试项目的命名空间引用

最终分类结构:
- CodeCategory(5), CollectionsCategory(7), ConvertCategory(3), DataCategory(2)
- DateTimeCategory(4), ColorCategory(1), IOCategory(7), MathCategory(4)
- NetCategory(3), ReflectCategory(3), Standardization(3), SystemCategory(2)
- TextCategory(7), ToolCategory(7), IdentifierCategory(1), BusinessCategory(1)
- 删除 ConvertCategory/ByteExtension.cs(仅含 Obsolete 方法,与 HexUtil 重复)
- 将 PageUtil 从 DataCategory 移动到 ToolCategory
- 删除空的 DataCategory 文件夹

最终分类结构(15个分类,55个文件):
- BusinessCategory(1), CodeCategory(5), CollectionsCategory(7), ColorCategory(1)
- ConvertCategory(2), DateTimeCategory(4), IdentifierCategory(1), IOCategory(7)
- MathCategory(4), NetCategory(3), ReflectCategory(3), Standardization(3)
- SystemCategory(2), TextCategory(9), ToolCategory(8)
- 完善 README.md 项目结构说明
- 新增 15 个分类的详细说明和文件清单
- 记录今日所有优化历程和最终成果
- 更新日期:2025-02-13
- 修复 IEnumerableExtensions.cs 命名空间为 EasyTool.CollectionsCategory
- 修复 PageUtil.cs 命名空间为 EasyTool.ToolCategory
- 移动测试文件到正确的分类目录 (IdentifierCategory, NetCategory)
- 为 EasyTool.NPOI 添加 OfficeCategory 分类目录
- 更新 GitHub Actions 到 actions@v4 和 .NET 8.0.x/10.0.x
- 在AesUtil和DesUtil中使用using语句确保AES/DES资源正确释放
- 添加AesCryptoStream包装器来管理加密流的生命周期
- 优化CreditCodeUtil类,改进统一社会信用代码验证逻辑和类型识别
- 实现农历公历转换功能,新增LunarDate数据结构
- 更新随机数生成策略,.NET 6+使用Random.Shared,旧版本使用ThreadLocal
- 为字符串工具类添加空值检查和更详细的文档注释
- 修复FileUtil.IsEmpty方法的逻辑错误和异常处理
- 迁移StringComparisonExtension到TextCategory命名空间
- 更新项目依赖包版本并移除不必要的条件引用
- 实现域名正向解析功能,支持IPv4和IPv6地址获取
- 实现IP地址反向解析获取主机名功能
- 添加本机网络信息获取方法,包括主机名和IP地址
- 实现DNS记录查询功能,支持MX、TXT、CNAME记录
- 添加IP地址验证和类型判断方法
- 实现IP地址与长整型转换工具方法
- 提供异步解析方法提升性能
- 将所有项目的 TargetFramework 统一为单个版本 (netstandard2.1 或 net8.0)
- 移除多目标框架配置,简化项目结构
- 在所有 Node 类型的属性上添加可空引用修饰符 (?)
- 修改 EmitMapperExtension 中的映射逻辑,增加空值检查
- 更新
本次提交主要包括以下内容:

- 测试代码断言由 IsTrue/== 替换为 AreEqual/HasCount/IsGreaterThan,提升可读性和准确性。
- DateTime 相关扩展方法统一调用 DateTimeUtil 静态方法,增强一致性。
- TSIDUtil 生成逻辑修正,避免符号扩展带来的潜在问题。
- HttpClientBuilder、RedisCacheProvider、TempFileUtil 增加预留字段并屏蔽未使用警告,便于后续扩展。
- TlsUtil 不安全协议判断方式调整,兼容更多平台。
- MSTest 配置项完善,抑制部分测试警告。
- 其他小幅代码清理与死代码修正。

整体提升了代码的健壮性、可维护性和未来扩展能力。
新增模块:
- EasyTool.AI: LLM客户端(OpenAI/Azure/Ollama)、NLP处理、向量计算
- EasyTool.Media: 音频处理、图像处理工具
- EasyTool.System: 硬件信息、性能监控、电源管理、键盘模拟
- EasyTool.All: 整合打包项目

新增核心工具类:
- 加密: EcdsaUtil, RsaUtil
- 集合: ArrayUtil, CollUtil, MapUtil, RingBuffer
- IO: FileTypeUtil(文件类型检测), TempFileManager(临时文件管理)
- 反射: ModifierUtil
- 文本: EscapeUtil, JsonUtil, TextCleaner
- 工具: BeanUtil, ConsoleUtil, RecordUtil, ThreadSafeRandom
- 数据: QueryBuilder

功能增强:
- HttpUtil: 添加HTTP重试机制和指数退避
- MessageQueueUtil: 添加消息队列持久化支持
- EnumUtil: 添加Description/Display属性支持
- SpellCheckerUtil: 添加异步扩展字典加载

新增单元测试覆盖各类新增功能
添加CHANGELOG.md记录版本变更
- NPOIUtil.cs: 将XML注释中的<T>转义为&lt;T&gt;
- SpellCheckerUtilExtendedTests.cs: 将.Wait()改为await异步调用
- 将CoreTests的所有测试文件移动到UnitTests
- 将MSTest格式转换为xUnit格式
- 从解决方案移除CoreTests项目
- 删除EasyTool.CoreTests目录
- CHANGELOG: 添加v1.1.1版本更新记录
- README: 重写项目定位和功能说明
  - 明确设计理念:轻量级、零依赖、填补空白、中文友好
  - 列出成熟框架替代方案,避免重复造轮子
  - 突出中国特色业务验证功能
  - 添加更多使用示例
- .gitignore: 添加.omc/和.claude/工具状态目录
- ChineseNumberUtil: 中文数字转换工具
  - 数字转中文(大小写)
  - 中文转数字
  - 金额大写转换
  - 简繁体数字转换

- RegionUtil: 行政区划工具
  - 省市区三级联动查询
  - 行政区划代码解析
  - 名称模糊搜索
  - 完整路径获取
新增10个填补空白的中文特色工具类:
- ChineseNameUtil: 中文姓名生成器
- UniversityUtil: 中国大学信息查询
- PhoneLocationUtil: 手机号归属地查询
- CompanyUtil: 公司名称生成器
- AddressUtil: 中国地址生成器
- ChineseHolidayUtil: 中国节假日工具(含调休)
- ChinesePinyinUtil: 汉字拼音转换
- PlateNumberUtil: 车牌号验证与归属地查询
- SolarTermUtil: 二十四节气工具
- SocialCreditCodeUtil: 统一社会信用代码工具
- 新增中国特色数据生成章节(姓名、大学、手机归属地、公司、地址)
- 新增中国节假日工具使用示例
- 新增行政区划和二十四节气工具说明
- 更新文件统计数据
- 添加 .idea/ 目录到忽略列表
- 添加 .spec-workflow/ 目录到忽略列表
- 更新 JetBrains Rider 注释为 JetBrains Rider / IntelliJ IDEA
- 移除 .idea 目录下的 IDE 配置文件包括 .gitignore、encodings.xml、indexLayout.xml 和 vcs.xml
- 删除 .spec-workflow/templates 目录下所有模板文件,包括 design-template.md、
  product-template.md、requirements-template.md、structure-template.md 和
  tasks-template.md
- 移除 .spec
新增功能:
- PasswordGenerator: 密码生成器,支持强度检测
- TwoFactorAuthUtil: TOTP双因素认证
- FakerUtil: 中文模拟数据生成器
- WeatherUtil: 天气查询工具
- HttpRetryUtil: HTTP重试和熔断器
- ShortUrlUtil: 短链接生成工具
- PdfUtil: PDF操作工具(占位)

项目优化:
- 解决方案文件夹结构重组 (Core/Extensions/Integration/Tests)
- 添加中央包管理 (Directory.Packages.props)
- 修复 .NET Standard 2.1 兼容性问题
- 新增单元测试覆盖 (288个测试全部通过)
CRITICAL Bug 修复:
- RingBuffer.TryRead 返回值永远为 true 的逻辑错误
- EscapeUtil/TextCleaner XML 反转义 &amp; 顺序错误
- AesUtil ECB 默认模式改为 CBC,IsLegalSize 字符长度改为 UTF-8 字节长度
- DesUtil IV 复用 Key 改为 GenerateIV(),ECB 改为 CBC
- TwoFactorAuthUtil Base32Decode 越界校验与 FormatException

性能优化:
- StringExtension 5 个正则提取为 static readonly Regex 编译缓存
- PasswordUtil 循环拼接改为 char[] + new string()
- CollUtil.Random OrderBy 改为 Fisher-Yates 部分洗牌 O(n)
- DateTimeUtil.GetMonthDays 预分配 List 容量
- FakerUtil 拒绝采样法消除模偏差和 int.MinValue 溢出

安全与线程安全:
- KeywordExtractor HashSet 改为 ConcurrentDictionary
- JsonUtil.DefaultOptions 懒加载改为 Lazy<T>
- ReflectUtil.InvokeGenericMethod 添加 null 检查
- 全项目 47 个文件英文错误消息统一翻译为中文

Breaking Changes:
- 15 个类命名空间从 EasyTool 统一移入对应 Category 命名空间
- AES/DES 默认加密模式从 ECB 改为 CBC
## 文档更新
- 全面重写 README.md(中文)和 README.EN-US.md(英文)
- 基于实际 300+ 工具类 API 编写完整的代码示例和使用说明
- 新增 NuGet 包一览表、扩展方法完整列表、项目统计
- 新增基础设施文档:CONTRIBUTING.md、SECURITY.md、CODE_OF_CONDUCT.md

## NuGet 发布优化
- EasyTool.All 添加缺失的 Web、Image 模块引用(8/8 完整)
- CI/CD 工作流从仅发布 Core 扩展为发布全部 9 个包
- 优化 Core/Web/Image/EmitMapper/NPOI 包描述和标签

## 测试覆盖提升 (1069 → 1896)
- 新增 NetCategory 测试:URL、ShortUrl、HttpClientBuilder(+93)
- 新增 ConvertCategory 测试:CSV、坐标、XML、单位转换(+227)
- 新增 ToolCategory 测试:Guard、Version、Backoff(+121)
- 新增 ValidationCategory 测试:ModelValidator、CompositeValidator(+70)
- 新增 IOCategory 测试:Compression(+若干)
- 新增基础设施:dependabot.yml、PR模板、global.json
#
仓库归属迁移、许可证更换及元信息统一

- 许可证由 MIT 更换为 Apache License 2.0,并更新 LICENSE 文件版权归属
- 所有 csproj 项目作者统一为 Joce,仓库/项目链接统一指向 li761747705/easytool
- 移除 easy-dotnet.com 相关链接,NPOI 包增加 OSMF 协议声明
- README、CHANGELOG、SECURITY、dependabot 等文档和配置全部切换为新仓库地址
- .gitignore 新增 .serena/ 忽略
- 删除 add_configureawait.py 脚本及其变更摘要文档
- 仅涉及元信息、文档和配置迁移,业务代码未变动
## 代码清理
- 删除 PdfUtil.cs(未实现方法,与项目定位不符)
- 清理 LinkedListUtil.cs 8个 Obsolete 方法,保留 MoveLast/MoveFirst
- 清理 DateTimeExtension.cs 13个 Obsolete 方法,保留有价值扩展
- 增强 RedisCacheProvider 文档注释,明确抽象扩展点用途

## 测试新增(+1346 测试)
- AICategory: TokenizerUtilTests(30+ 测试)
- CacheCategory: MemoryCacheProviderTests、DistributedCacheUtilTests(74 测试)
- EmitMapperCategory: EmitMapperExtensionTests
- ImageCategory: ImgUtilTests
- NPOICategory: NPOIUtilTests
- SystemCategory: HardwareInfoUtilTests、PowerUtilTests、PerformanceUtilTests(83 测试)
- WebCategory: BuildDtoToTSTests

## 其他更新
- README 测试徽章更新为 2000+(实际 2422)
- 测试项目引用扩展模块项目
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant