### 计划 --- ### 最新提交 ### 6.2.0 - Logger:重写了功能,统一日志的调用方法; - NetworkUtility:新增检测 TCP 端口 UDP 端口的方法; - StringPairs:支持检查 Key 是否存在; - WebAPI:优化参数和流程,提高运行效率,并增加定制选项; - WindowsUtility:更名为 SystemUtility,增加判断操作系统的方法。 ### 6.1.0 - DateTime:修正了超出范围值的问题; - TextUtility:新增 RenderMarkdown 方法,支持将 Markdown 文本转换为 HTML 文本; - TextUtility:放宽了 SafeKey 限制十六进制字符的限制,现在允许所有字母和数字; - Source:解析 Record 结构加入缓存,以提高性能; - MySql:新增 Escape 方法; - MySql:新增 QueryRecords 重载,支持分页查询; - MySql:新增 AddColumn 方法,支持增加单列; - MySql:新增 SafeTable 方法和 SafeColumn 方法,提供对表明和列名的检查; - WebAPI:支持设置 Response 的缓存过期时间(在 .NET Framework 中可能无效); - WebAPI:添加 Response.Respond(Json) 方法; - WebAPI:支持读取或设置 Cookies,且 ApiRequest 从 Cookies 中读取 Ticket; - WebAPI:Response.Text 现在默认在 Content-Type 中指定 UTF-8。 ### 6.0.14 - 修正了 Json.Parse 的 NULL 引用问题; - 修正了生成 MySQL 的 Insert 语句字段报错问题。 ### 6.0.13 - 从文本转换到 Single、Double 和 Decimal,在转换前将自动修剪; - 不再强制要求在启动 Kestrel 前调用 SetKestrelEntries。 ### 6.0.12 - 扩展方法 ToSingle、ToDouble、ToDecimal 支持输入百分号。 ### 6.0.11 - 扩展方法 ApiResponse.Respond 支持返回错误信息。 ### 6.0.10 - 修正 SafeKey 错误。 ### 6.0.9 - 调整了 TextUtility.SafeKey 的长度限制。 ### 6.0.8 - Query.SimpleColumn 不再去重,提升性能。 ### 6.0.7 - 修正 MySql 使用 List 时的性能问题。 ### 6.0.6 - 修正内网环境中 WebUtility.FromTrusted 的判断。 ### 6.0.5 - 对 WindowsUtility.RunConsole 增加重载,可按行获取输出,且可获取错误流; - 调整 FromTrusted 的规则,减少了存在反向代理时的误判。 ### 6.0.4 - 修正 GetClientIP 参数不生效的问题。 ### 6.0.3 - 修正 GetParameter 获取不到 GET 参数的问题。 ### 6.0.2 - 修正 GetParameter 匹配 Json 的问题。 ### 6.0.1 - 修正 GetParameter 匹配 Json 的问题。 ### 6.0.0 - 修改项目 Apewer.Library 为 Apewer; - 删除命名空间 Apewer.Common,子项移入 Apewer; - 删除命名空间 Apewer.WinForms,子项移入 Apewer.Surface; - 初步支持通过 Kestrel 启动 Web.ApiInvoker; - 修改类 ApiServer 为 ApiController; - 在 Surface.FormsUtility 中扩充了常用的方法; - DeleteFile 和 DeleteDirectory 支持使用临时目录。 ### 5.10.0 - 加入 FormsUtility(从原 Surface 类迁移); - 加入 WindowsUtility; - 加入 BlockUI,支持 .NET Core。 ### 5.9.5 - 新增 ApiClient 的上传文件功能和 GET 请求。 ### 5.9.4 - 新增 IEnumerable 的扩展方法 ToList、IsEmpty、NotEmpty、Contains 和 Sub; - 修正 ZIP 中文文件名编码问题; - 新增 ZIP 文件压缩解压(StorageUtility)。 ### 5.9.3 - 修复 UdpClient.Send 无条件等待的问题。 ### 5.9.2 - 新增 Apewer.Network.UdpServer 的 Address 属性。 ### 5.9.1 - 新增 Apewer.Web.ApiClient。 ### 5.9.0 - 重新支持 .NET Framework 2.0。 - 新增 Redis 访问; - ApiServer 新增 AllowFunction 属性,可拒绝调用 Function; - TableStructure 解析无 Column 的 Record 时不再抛出异常; - TableStructure 修正 Column 特性时默认对 String 属性使用 NText,不再抛出异常。 ### 5.8.0 - 加入记录日志的功能; - 加入 WebAPI 转发功能; - 扩展了 String 的 Split 方法。 ### 5.7.1 - 修正 MySQL 建表时的主键问题。 ### 5.7.0 - 新增 StorageUtility.WriteFile 重载,支持格式化的 Json; - 重写 BinaryUtility.AddTextBom 方法,提升了效率; - 限制 Key 长度为 128,Source 创建表时默认指定 Key 字段为主键; - 修正 VarChar 和 NVarChar 指定长度无效的问题。 ### 5.6.6 - 修正扩展方法 Set 和 Set<> 布生效的问题; - 修正扩展方法 Get 的返回类型; - 增加扩展方法 TypeEquals。 ### 5.6.5 - 去除了无效的扩展方法 InvokeGet 和 InvokeSet; - 提供扩展方法 Get、Set、Get<> 和 Set<>。 ### 5.6.4 - 扩展方法 ForEachProperties 不再对 Object 类型提供。 ### 5.6.3 - 优化代码冗余。 ### 5.6.2 - 新增 PropertyInfo 的扩展方法。 ### 5.6.1 - 修正扩展类型 IsZero 和 NotZero 无法匹配类型的问题。 ### 5.6.0 - 调整目标框架为 .NET Framework 4.6.1、.NET Core 3.1 和 .NET Standard 2.1; - ApiInvoker 从 URL 路径中解析 Application 和 Function 时解析转义; - ObjectSet 和 TextSet 支持动态类型; - 修正 Json.FillObject 和 Json.FillArrray 方法报错的问题; - 新增排序方法; - 新增数字类型的扩展方法 IsZero、NotZero 和类型转换。 ### 5.5.3 - 新增 Json.ToLower 扩展方法; - 新增 Object.Clone 扩展方法,替代原 Record.Clone 扩展方法; - String.Append 和 StringBuilder.Append 扩展方法不再需要指定类型,通过 TextUtility.Join 合并参数。 ### 5.5.2 - Json.Parse 方法将检测是否实现 IToJson 接口,实现接口的类型,使用 ToJson 方法解析。 ### 5.5.1 - 更新了 API 选项默认值; - 修正 Record.Clone 扩展方法; - 修改了 Request.GetParameter 的返回值。 ### 5.5.0 - 修正了会导致 CPU 负载异常的类型; - 移动了 Extension,大部分扩展方法不再需要引用命名空间; - 去除了 .NET Framework 4.0 目标框架。 ### 5.4.0 - MySQL 的 Execute 方法支持参数; - 新增 Record 对 Independent 特性的支持。 ### 5.3.3 - 修正 Cron 不再启动的问题。 ### 5.3.2 - 修正检测 Cron 类型为 0 的问题。 ### 5.3.1 - 对 Cron 的 Write 加入日志。 ### 5.3.0 - 加入 Apewer.Web.Cron; - 加入扩展方法 Apewer.Source.Record.Clone()。 ### 5.2.5 - 开放 IsInherits 方法。 ### 5.2.4 - 加入 DateTime.Origin 静态属性。 ### 5.2.3 - 修正 Record 从 Apewer.Library 中加载类型失败的问题。 ### 5.2.2 - 修正 ApiInvoker 从 Apewer.Library 中加载类型失败的问题。 ### 5.2.1 - 修正 ApiInvoker 从 Apewer.Library 中加载类型失败的问题。 ### 5.2.0 - 加入 MySQL 客户端,支持 .NET Framework 访问 MySQL 数据库。 ### 5.1.5 - 修正了 TableStructure.ParseModel 解析过程中的下划线错误。 ### 5.1.4 - 修正了 TableStructure.ParseModel 解析指定列名的错误。 ### 5.1.3 - 限制了 Json.Parse 对 Assembly 的解析递归层数。 ### 5.1.2 - 限制了 Json.Parse 对 Type 的解析递归层数。 ### 5.1.1 - 修正 Record.EnumerateTableTypes 当前类的问题; - 加入 NotEmpty 扩展方法。 ### 5.1.0 - ApiRequest 加入 Session 和 Page 属性,用于记录日志。 ### 5.0.7 - ApiResponse 加入 Redirect 和 Stop 扩展方法; - ApiInvoker 支持调用独立 ApiServer,不强制要求指定 Function 属性。 ### 5.0.6 - 优化列举 Applications 的性能; - 新增 Record.EnumerateTableTypes 方法,用于创建表。 ### 5.0.5 - 新增 IndependentAttribute; - 对 Json.Parse 方法、Json.FillObject 方法和 Json.FillArray 加入 force 参数; - ApiRequest.Url 类型修改为 System.Uri 对象; - ApiInvoke 仅在 Application 或 Function 为空时显示列表; - ApiInvoke 列举 Applications 时加入 Module 属性; - ApiInvoke 支持 ApiServer 的独立特性,设置 ApiServer 属性后调用 AfterInitialized。 ### 5.0.4 - 修正 GetSegmentalUrl 带有斜杠的问题。 ### 5.0.3 - 修正 CreateTable 方法生成表时的公共列排序问题; ### 5.0.2 - Json.Parse 方法不再无限解析 Assembly 类型; - 修改了 HttpClient 的方法名称,减少重载方法; - 对 ApiInvoker 输出的 Exception 加入类型; - 修正 DateTimeUtility 中关于时间戳的说明; - 增加 Extensions.GetFirst 扩展方法。 ### 5.0.1 - Json.Parse 方法解析 IList 或 IDictionary 时,不再要求 SerializableAttribute 特性; - SqlServer 类中的 QueryAllRecords 更名为 QueryRecords。 ### 5.0.0 - 加入 Microsoft.NET.Sdk,项目同时支持 .NET Framework 4.0、.NET Framework 4.6.1 和 .NET Standard 2.0; - Apewer.Library.Windows 中无需外部引用的类已经移动到 Apewer.Library; - 删除了命名空间 Apewer.Utilities,原类已经移动到 Apewer; - 删除了 Apewer.Web.Invoker,更换为 Apewer.Web.ApiInvoker。 --- 更早版本 ...