You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

769 lines
32 KiB

2 weeks ago
1 month ago
6 months ago
6 months ago
6 months ago
8 months ago
9 months ago
11 months ago
1 year ago
1 year ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. ### 6.8.10
  2. - 新特性
  3. - 增加 ApiContext.Current 属性,用于获取当前的 API 上下文;
  4. - 增加 Query.Column<T> 和 Query.Cell<T> 方法,支持指定输出类型;
  5. - 增加 DrawingUtility.AsImage 方法,将字节数组作为 Image 执行回调;
  6. - 增加 DrawingUtility.AdjustRotation 方法,自动调整图片的旋转方向;
  7. - 增加 DrawingUtility.AspectScale 方法,实现等比例缩放,用于生成缩略图。
  8. - 问题修正
  9. - 修正 WriteFile 在带有 BOM 时不清空文件的问题。
  10. ### 6.8.9
  11. - 新特性
  12. - 增加扩展方法 Stream.Read(int),用于读取指定长度的字节数组;
  13. - TextUtility 增加 Pascal、Kebab 和 Snake 方法,用于转换字符串的命名风格;
  14. - [Table] [Column] 支持设置 CustomTableName,自定义实现类名(方法名)到表名(字段)的转换;
  15. - 增加 IApiException,支持传递 Status 值;
  16. - 增加 [Unparallel],用于标记 API 不允许并行调用;
  17. - Json 支持序列化 byte[] 属性,并且支持自定义转换方法;
  18. - 增加 DrawingUtility 类,提供常用的图像处理方法;
  19. - Array.Sort 支持多个对比器,用于按多个属性排序;
  20. - 增加扩展方法 Item.In(Collection),用于判断元素是否在集合中;
  21. - 问题修正
  22. - 修正 ObjectSet[].Dynamic 的编译条件;
  23. - 修正 CreateShortcut 默认参数报错的问题;
  24. - 修正了一些代码错误。
  25. ### 6.8.8
  26. - 问题修正
  27. - 修正 TableStructure 中派生类属性未生效的问题;
  28. - 修改 IndexAttribute 中排序参数的类型名称,解决常用名称与应用冲突的问题。
  29. ### 6.8.7
  30. - 问题修正
  31. - 增加 TextUtility.Distinct 方法,对字符串集合去重;
  32. - 增加 ApiInvoker.AddMiddleware 方法,以支持中间件;
  33. - 增加 SqlClient.QueryExecutingStatement 方法,用于查询正在执行的语句。
  34. ### 6.8.6
  35. - 新特性
  36. - Logger.Default 默认启用日志文件,保留 30 天;
  37. - NumberUtility 增加 Sum 方法,用于线程锁;
  38. - NumberUtility 增加 Lock 方法,用于线程锁;
  39. - DbClient 增加 SetTransaction 方法,支持设置事务实例;
  40. - TableStructure 在解析数据模型时,将基类的字段放置在靠前的位置;
  41. - 增加 IndexAttribute 特性,用于标记索引;
  42. - SqlClient 增加 Initialize 方法,支持创建索引;
  43. - SqlClient 创建表时,支持多个主键。
  44. - 问题修正
  45. - 修正 ReadFile 无法读取日志文件的问题;
  46. - 修正 TextUtility.Lock 方法抛出异常的问题;
  47. - 修正 Tray.Form 不是顶层窗口的问题。
  48. ### 6.8.5
  49. - 新特性
  50. - 新增 T[].With 方法,实现与 JS 相同的功能;
  51. - 新增 IEnumerable<T>.Group 方法,实现按键名分组(需注意处理键为 null 的情况);
  52. - 增加 byte[].X2 重载,支持指定分隔符;FromHex 增加对空格和连字符的识别;
  53. - 重写 TcpServer 和 TcpClient 类,提升可用性;
  54. - 新增 Socket.Online、Socket.Receive 和 Socket.Connect(timeout) 扩展方法;
  55. - 新增 SetRun 和 CancelRun 方法,用于设置 Windows 用户的开机启动项;
  56. - 新增 ApiOptions.AllowOptions 选项,可选择允许调用 API(默认不执行 API 调用);
  57. - 新增 WebSocket.SimpleServer,用于实现简易的 WebSocket 服务端;
  58. - 新增 Web.RedirectResult 类;
  59. - StaticController 增加对 Web.zip 的支持,解析请求时优先从 Web 目录获取,若不存在则从 Web.zip 文件中获取;
  60. - FixProperties 增加 DateTime 的修复,默认最小值为 1753 年 1 月 1 日,早于此日期的值将自动更正为此值;
  61. - StorageUtility.WriteFile 增加了自动创建目录的动作。
  62. - 问题修正
  63. - 修正 NetworkUtility.Mime 方法会从目录名中获取后缀名的问题;
  64. - 修正 BridgeController 在 InnerException 为 null 时会报错的问题。
  65. ### 6.8.4
  66. - 新特性
  67. - 增加 RuntimeUtility.CatchException 方法,允许设置全局异常捕获;
  68. - 增加 RuntimeUtility.IsAdministratorRole 方法,用于判断进程是否正在以管理员身份运行;
  69. - 增加操作单个 Cron 的方法,Break 可打断循环,Abort 可打断线程;
  70. - 增加扩展方法 URI.Segmental();
  71. - 增加扩展方法 byte[].CRC16();
  72. - 增加 UnauthorizedException 异常类型;
  73. - 增加 WinForms.Tray,用于通用的托盘程序;
  74. - 控制器(ApiController)增加 Context 属性。
  75. - 问题修正
  76. - 修正 ApiOptions.DefaultRenderer 方法返回类型是 void 时会继续执行后续流程的问题。
  77. - 恢复 Apewer.Source 对 SQLite 包的引用;
  78. - 修正 TextUtility.FromBytes 遇到 0xFF 时不截断字符串的问题。
  79. ### 6.8.3
  80. - 新特性
  81. - 增加了 JumpStatement 枚举,用于返回后续行为;
  82. - Access 类中提供了空的 .mdb 文件和 .accdb 文件,用于创建新数据库;
  83. - InBackground 方法增加重载,提供 delay 参数,用于指定延迟时间,用法将类似于 JavaScript 中的 setTimeout 方法;
  84. - IDbAdo 的扩展方法 Column、Cell 和 Query<T> 增加重载,支持使用匿名参数作为 SQL 参数;
  85. - ClockUtility.Parse 增加重载,使用 failed 参数返回失后的默认值;
  86. - CollectionUtility 中增加了 Join 方法,支持将 IEnumerable<T>[] 连接为单个 T[] 对象;
  87. - BytesUtility 中增加了 AesEncrypt 和 AesDecrypt 方法,用于支持 AES 128/192/256 的加密和解密;
  88. - Logger 支持指定 Name,用于区分不同的日志文件;
  89. - Class<T> 增加了 IDisposable,支持在 using 语句中调用 Value 的 Dispose 方法;
  90. - TextUtility 增加 Lock 方法,用于锁定文本内容(不锁定 string 对象);
  91. - 增加 Enumerator<T>,作为通用的枚举器。
  92. - 问题修正
  93. - 修正 RuntimeUtility.ApplicationPath 末尾包含斜杠的问题,现已删除斜杠;
  94. - 修正 Access.TableNames 方法获取不到表名的问题;
  95. - 修正 StaticController 获取默认根目录的方法;
  96. - 修正 MiniServer 关闭时会抛出异常的问题;
  97. - 修正 MiniServer.GetPort 方法获取不到端口的问题;
  98. - 修正 HttpClient 实例中缺少 CookieContainer 导致 NULL 引用的异常。
  99. ### 6.8.2
  100. - 问题修正
  101. - CollectionUtility:Distinct 不再作为 IEnumerable<T> 的扩展方法,以避免与 System.Linq 冲突。
  102. ### 6.8.1
  103. - 新特性
  104. - HttpClient:增加 RequestTime 和 ResponseTime 属性,记录发起请求和接收响应的时间;
  105. - HttpHeaders:增加 GetNames 方法,用于获取所有名称。
  106. - 问题修正
  107. - CollectionUtility:修正 Distinct 判断参数为 NULL 时会抛出异常的问题;
  108. - TextUtility:删除 Write(path, json) 方法,以避免传递错误参数导致写文件失败;
  109. - Web:修正 ApiContext.Action 无值的问题;
  110. - Web:修正 ApiOptions.TextRendrer 的默认值,正确的默认值应该是 NULL。
  111. ### 6.8.0
  112. - 新特性
  113. - ClockUtility:增加 CustomToStamp 和 CustomFromStamp,支持自定义时间戳的转换方法;
  114. - Json:识别实例类型的 .ctor(Json) 构造函数,由类型自己实现反序列化;
  115. - Web:兼容微软 API,支持 Route 特性,支持返回 ActionResult;
  116. - WindowsUtility:增加读取进程内存的方法。
  117. ### 6.7.6
  118. - 新特性
  119. - CollectionUtility:增加数组的 Push 和 Unshift 方法;
  120. - Json:支持序号索引访问 Json 数组;
  121. - Json:静态属性 Json.DeserializeDateTime 可自定义 DateTime 的反序列化,允许用户代码转换字符串或 DateTime.Kind;
  122. - NumberUtility:增加平均值、标准差、极差;
  123. - Source:InTransaction 支持使用已存在的事务;
  124. - Windows:增加扩展方法 AllowResizeForm,支持鼠标调整无边框窗体的大小。
  125. - 问题修正
  126. - ByetsUtility:修正 ToBase64 的 null 引用问题;
  127. - Source:InTransaction(Action) 去除无用的泛型要求;
  128. - Source:InTransaction 不再捕获异常,直接抛出 action 的异常。
  129. ### 6.7.5
  130. - 问题修正
  131. - Query:删除了一些访问单元格的重载方法,减少歧义;
  132. - Source:增加 IDbConnection 的扩展方法 Query 和 Execute;
  133. - TextUtility:修正 Join 无法解析 Lis<string> 的问题;
  134. - Web:修正 Response 无效时会抛出 NULL 引用的问题。
  135. ### 6.7.4
  136. - 问题修正
  137. - Source:修正了 Timeout 的默认值,已经改为连接 5 秒,查询、执行 3600 秒。
  138. - 新特性
  139. - Source:增加扩展方法 IDbAdo.InTransaction;
  140. - WindowsUtility:增加 GetIdleTime 方法,获取系统空闲毫秒数。
  141. - 已迁移特性
  142. - Source:调用 Close 后,不再允许再次连接(之前可以再次发起连接),错误的操作将返回错误信息或抛出 ObjectDisposedException;
  143. - Source:分离 ClearPool 方法,去除自动执行,现在可以使用 IDbAdo.OnClosed 属性设置关闭连接之后的回调。
  144. ### 6.7.3
  145. - 问题修正
  146. - ClockUtility:修正 Query.DateTime() 出现 null.ToString 问题;
  147. - TableAttribute:去除了部分类型不应存在的 TableAttribute;
  148. - SqlClient:修正建库功能,现在可以正确设置兼容性级别为 100(SQL Server 2008);
  149. - TextUtility:统一 Merge 和 Join 方法,解决日志中有完整类名的问题。
  150. - 新特性
  151. - ApiException:增加了参数 status,用于指定要输出的状态;
  152. - ApiInvoker:增加 PreOutput,按 Response -> Invoker -> Options 的顺序执行检查;
  153. - BytesUtility:计算 AES256 支持使用 Stream 作为参数,以支持大文件;
  154. - ClockUtility:扩展方法增加 DateTime? 和 Class<DateTime> 类型;
  155. - CollectionUtility:增加 Find、FindAll、Map 和 ForEach 扩展方法;
  156. - DbClient:增加 ThrowAdoException 属性,可要求 ADO 方法抛出异常;
  157. - FormsUtility:增加获取 GUI 字体的静态属性;
  158. - Json:修正 From(IList) 参数元素是 null 时的报错;
  159. - Json:增加自定义 DateTime 的序列化和反序列化功能;
  160. - MySql:构造函数现在支持指定服务器的端口号;
  161. - NumberUtility:增加 ToChinesePrice 方法,用于生成中文大写金额;
  162. - RuntimeUtility:增加 GetTypeOfArrayItem 方法,获取数组的元素类型;
  163. - RuntimeUtility:现在抛出正确的 InnerException,而不是上层 Exception;
  164. - Sqlite:调用构造函数时,如果文件不存在,现在会自动尝试创建文件,而不是立即报错;
  165. - StorageUtility:增加 AssureFile 方法,创建空文件;
  166. - StorageUtility:增加 HasZoneIdentifier,用于检测是否包含标记;
  167. - SourceUtility:增加 ObjectSet[] 转为 dynamic[] 的扩展方法;
  168. - SourceUtility:增加 Compute 方法,计算数学文本表达式;
  169. - 增加扩展方法 Image.Resize;
  170. - 增加扩展方法 string[].Trim。
  171. - 已迁移特性
  172. - 迁移 Query 方法,改为 DataTable 的扩展方法。
  173. - 弃用特性
  174. - 去除 object 转数值类型的扩展方法,现在扩展方法只支持明确支持的类型。
  175. - Class<T> 去除了无用的 HasValue 属性。
  176. ### 6.7.2
  177. - 问题修正
  178. - 修正了 SQLite 的构造函数中的 path 参数;
  179. - Apewer.Source 不再包含对 System.Data.SQLite.Core 的依赖,最终代码项目中需要额外添加引用。
  180. - 新特性
  181. - Json 强制序列化选项已修改为 true,以简化最终代码;
  182. - Json 解析新增支持数组类型,提升性能;
  183. - HttpClient 增加了参数 catchEx = true;
  184. - AspNetCoreServer 新增了 LogConsole 属性,默认值为 true,用于配置控制台输出。
  185. ### 6.7.1
  186. - 问题修正
  187. - 修正了 Evaluate 可能不释放计时器的问题;
  188. - 修正了 MiniServer 的 302 响应;
  189. - 修正了 HttpClient.RequestData 为 NULL 时的报错;
  190. - 修正了 HttpClient.RequestHeaders 为 NULL 时的报错;
  191. - 修正了 Query<T> 使用字典传参时的 @ 错误。
  192. ### 6.7.0
  193. - 大更新
  194. - Result 模型已完全删除,使用 Result 的程序现在已经改为抛出异常,解决程序返回值混乱的问题;
  195. - 新增了 SqlException 和 ModelException 类型。
  196. - 新功能
  197. - 新增 ApiUtility.StopReturn 方法,可阻止框架解析 ApiResponse 的返回值;
  198. - 新增 RuntimeUtility.IsAnonymousType 方法,用于判断匿名对象;
  199. - 新增 NetworkUtility.Ping 方法,替代原 Icmp 类。
  200. - 增加了基类 KeyRecord 和接口 IRecordPrimaryKey,可以方便地将 Key 属性标记为主键;
  201. - 新增 CollectionUtility 类;开放其中方法,不再限于扩展方法;
  202. - 新增关于时区的方法。
  203. - 问题修正
  204. - 修正 HttpClient 缺少 ResponseHeaders 的问题;
  205. - 修正 ApiModel 不释放 Stream 的问题。
  206. ### 6.6.28
  207. - BytesUtility:优化 ToX2 性能;
  208. - Logger:修正默认删除所有日志文件的问题;
  209. - Logger:增加预置回收程序;
  210. - Json:修正 Rename 不使用 newValue 的问题;
  211. - Source:Table 特性增加了 Model 属性,用于记录类型;
  212. - Source:修正 T[].DateTable() 取不到类型的问题。
  213. ### 6.6.27
  214. - Source:修正 IndexAttribute 的缓存异常问题。
  215. ### 6.6.26
  216. - Source:Insert 和 Update 增加 adjust 参数,可忽略补充字段和填充属性。
  217. ### 6.6.25
  218. - Source:修正解析 Column 特性时对 NoUpdate 的判断。
  219. ### 6.6.24
  220. - Json:修正 Rename 方法中,内层 Object 不更新的问题。
  221. ### 6.6.23
  222. - TextUtility:修正 params object[] 出现的嵌套问题。
  223. ### 6.6.22
  224. - Extensions:增加 string.Camel 扩展方法;
  225. - Logger:支持自动删除旧日志文件;
  226. - Json:添加 ForceAll 静态属性,指定为 TRUE 时将所有类型视为拥有 Serializable 特性;
  227. - Source:修正 MySql 不补充主键的问题;
  228. - Source:增加 NoUpdate 特性,用于在更新时忽略指定列。
  229. ### 6.6.21
  230. - Source:修正 Records[].DateTable() 存放无效 DateTime 时的问题。
  231. ### 6.6.20
  232. - Source:Initialize 支持指定表名;
  233. - Source:T[].DataTable() 支持获取 T 的表名;
  234. - Source:T[].DataTable() 支持 Nullable 泛型。
  235. ### 6.6.19
  236. - Source:修改默认参数 autoTransaction 值为 False;
  237. - Web:在 ApiProgram 中开放 Invoker。
  238. ### 6.6.18
  239. - Source:修正事务被提前提交的问题。
  240. ### 6.6.17
  241. - Cron:支持去除 Beginning 和 Ended 事件日志;
  242. - Web:ApiInvoker 支持全局异常捕获;
  243. - Web:ApiModel 构造函数中加入 Headers 的初始化;
  244. - Web:MiniServer 支持识别客户端的 Accept-Encoding 中指定的压缩选项;
  245. - Web:对 AspNetCoreServer 启用全局压缩选项。
  246. ### 6.6.16
  247. - Source:数据库客户端支持使用现有的连接。
  248. ### 6.6.15
  249. - Network:修正主机地址存在多个 A 记录时的程序异常问题;
  250. - Network:修正 NTP 不支持 IP 地址问题;
  251. - Source:Source:Execute、Insert 和 Update 不再默认自动启用事务;
  252. - Source:增加 DateTable.Fill 方法。
  253. ### 6.6.14
  254. - Mini:修正读取请求时,RemainsBytes 溢出的问题;
  255. - StorageUtility:增加 DeleteZoneIdentifier 方法,用于解锁浏览器下载的文件。
  256. ### 6.6.13
  257. - Web:修正 Query 中参数转为小写的问题。
  258. ### 6.6.12
  259. - Logger:输出到文件,支持内存缓存以批量写入文件。
  260. ### 6.6.11
  261. - 项目:去除了 .NET Standard 2.1 目标,减小 NuGet 包体积;
  262. - ArrayBuilder:仿 JS,增加 Push、Pop、Shift 和 Unshift 方法;
  263. - Cron:去除 Cycle 中的月和年,因天数不固定;
  264. - Source:修正 Query.DateTime 的问题;
  265. - Network:修正 Mine 始终返回默认值的问题;
  266. - Web:API 入口支持基类的方法。
  267. ### 6.6.10
  268. - Network:修正 HttpClient 中不写入 Request.Body 的问题。
  269. ### 6.6.9
  270. - Network:修正 HttpClient 中丢失了 Content-Length 的问题。
  271. ### 6.6.8
  272. - Json:From(object) 新增识别 string;
  273. - LockedException:新增类;
  274. - Logger:优化代码,减少调用;
  275. - Network:重写 HttpClient,简化代码,删除 HttpRequest 和 HttpResponse 类;
  276. - NumberUtility:增加 Random 方法重载,支持填充数组;
  277. - RuntimeUtility:增加 StackTrace 方法;
  278. - RuntimeUtility:增加 Exit 方法,用于结束进程;
  279. - Source:数据库客户端新增 ConnectionString 属性;
  280. - Source:关闭连接时,从连接池清除此连接;
  281. - Source:Query<T> 支持不带 Table 特性的类型;
  282. - Source:Query 和 Execute 支持隐式转为 Boolean;
  283. - Source:Sqlite 增加 Attach 和 Detach 方法;
  284. - Web:增加 MiniServer,此功能处于试验阶段;
  285. - Web:桥接控制器,Route 支持空参数,此时取方法名称;
  286. - Web:Bridge 支持自定义 Response 格式化程序;
  287. - Web:增加 CORS 私人网络访问的响应头;
  288. - Web:HttpListener 参数改为 prefix;
  289. - Web:Kestrel 支持 IIS;
  290. - Windows:增加 Tray 类。
  291. ### 6.6.7
  292. - Source:生成记录参数时,自动对 NULL 值使用 DBNull。
  293. ### 6.6.6
  294. - ArrayBuilder:新增连接 char 和 string 的扩展方法;
  295. - Cron:支持按周期执行;
  296. - Cron:支持从 Caption 特性获取标题,以取代类名;
  297. - Source:Client 不再支持被继承;
  298. - TextUtility:优化 Guid 和 Key 方法的性能;
  299. - Web:MIME:新增 mkv 格式;
  300. - Web:Cookies 改用 CookieCollection;
  301. - Web:修正 ApiInvoker 的错误捕获;
  302. - WindowsUtility:增加读写内存的方法;
  303. - Extensions:新增 IEnumerable<string>.Join 方法。
  304. ### 6.6.5
  305. - Extensions:新增对数组排序的扩展方法;
  306. - Json:修正 From 的类型问题,支持反射类型和异常类型;
  307. - Source:Insert 和 Update 不再对表名添加符号,以支持跨库的表名。
  308. ### 6.6.4
  309. - 撤销 6.6.3 的改动;
  310. - AspNetBridge:修正 HttpContent 未指定 Content-Length 时的 IIS 服务器错误。
  311. ### 6.6.3
  312. - AspNetBridge:HttpContent 的 Stream 自动读取为字节数组。
  313. ### 6.6.2
  314. - Json:修正子属性是数组时 From 方法填充 IList 失败的问题。
  315. ### 6.6.1
  316. - Source:去除 DbClient 中不必要的异常;
  317. - Source:修正 Key 和 Flag 被强制排除的问题。
  318. ### 6.6.0
  319. - AspNetBridge:新命名空间,支持桥接 ASP.NET 的 API。
  320. ### 6.5.10
  321. - Source:新增 Incremental 特性,用于标记自动增长字段;
  322. - Source:新增 PrimaryKey 特性,用于标记主键字段;
  323. - Source:添加 IEnumerable<T>.DataTable() 扩展方法;
  324. - Source:SqlClient 支持 Bit 类型;
  325. - Source:SqlClient 新增 BulkCopy 方法;
  326. - ObjectSet:实现 GetDynamicMemberNames 的重写。
  327. ### 6.5.9
  328. - Source:修正 Query<T> 填充无特性类型时的报错;
  329. - Source:新增 Query.ToArray 方法,支持 dynamic。
  330. ### 6.5.8
  331. - Source:SqlClient 新增 CreateStore 方法,支持创建数据库。
  332. ### 6.5.7
  333. - ArrayBuilder:增加 Contains 方法和 IndexOf 方法;
  334. - NetworkUtility:ListActivePort 返回值改为数组;
  335. - RuntimeUtility:StartThread 默认使用前台线程;
  336. - Source:OrmHelper 重命名为 SourceUtility。
  337. ### 6.5.6
  338. - Global:增加 IsNull 和 NotNull 扩展方法;
  339. - ArrayBuilder:添加了 Add 重载方法;
  340. - Network:新增 TcpProxy 类;
  341. - RuntimeUtility:屏蔽 Console.Title 抛出的异常;
  342. - Source:IRecordMoment 和 IRecordStamp 不再生成值,将由实现类提供;
  343. - Source:修正 Query 方法中查询超时不生效的问题。
  344. ### 6.5.5
  345. - Source:调整了 SqlClient 的查询超时设置。
  346. ### 6.5.4
  347. - Source:调整了 SqlClient 的查询超时设置。
  348. ### 6.5.3
  349. - Source:修正代码错误。
  350. ### 6.5.2
  351. - Cron:修正多线程下同一类型并发的问题。
  352. ### 6.5.1
  353. - Source:修正 Fill DateTime 报错的问题。
  354. ### 6.5.0
  355. - Cron:新增 CronAttribute,取代 Source 中的 Cron,并支持 Dispose;
  356. - Json:修正 Json 转为 T[] 的问题;
  357. - Source:修正 FixProperties 强制重置 Key 的问题;
  358. - Source:Record 主键长度调整为 32;
  359. - Soruce:修正 ORM 的 Get 方法;
  360. - Source:不再默认添加下划线;
  361. - Source:Insert 和 Update 支持指定表名;
  362. - Source:SqlClient 支持解析表结构;
  363. - Source:去除 Table 和 Column 默认的下划线;
  364. - Source:Connect 现在返回错误信息;
  365. - Source:IRecordStamp 使用本地时间(原为 UTC 时间);
  366. - Web:ApiEntiry 增加 CanNew 检查;
  367. - Web:增加预置资源。
  368. ### 6.4.2
  369. - ArrayBuilder:修正 512 长度无法扩展的问题。
  370. ### 6.4.1
  371. - Clock:增加 long.DateTime() 方法;
  372. - Json:引用的 List 现改为数组;
  373. - Source:SqlServer 重命名为 SqlClient,并支持 .NET Standard;
  374. - Source:Query 和 Execute 支持 ToJson 方法;
  375. - Source:TableAttribute 增加 Store 属性,用于 Accessor 匹配;
  376. - Source:ORM 引用的 List 现改为数组;
  377. - Source:增加 Begin、Commit 和 Rollback,用于控制事务;
  378. - Web:不再要求控制器拥有 public 修饰符。
  379. ### 6.4.0
  380. - 重构项目,减少了主类库的依赖项和文件体积;
  381. - BytesUtility:新类,由 BinaryUtility 重命名而来;
  382. - Class<T>:支持隐式转换到布尔类型,判断是否包含值;
  383. - Source:MySql 不再引用 NuGet 包;
  384. - Source:简化 IRecord 属性,仅保留 Key 和 Flag;
  385. - TextUtility:简化了方法名称;
  386. - Web:新增抽象类 ApiProvider,现在可以自定义 Web 服务程序;
  387. - Web:新增抽象类 ApiModel,Api 方法现在可以返回其派生模型。
  388. ### 6.3.6
  389. - Source:增加 OrmHelper,并统一了 ORM 方法的实现。
  390. ### 6.3.5
  391. - Source:FixProperties 不再修改 Flag。
  392. ### 6.3.4
  393. - Logger:支持指定文件路径;
  394. - Models:StringPairs 支持通过构造函数设置初始容量;
  395. - Source:去除 Attribute 的 Lock 方法,不再锁定属性;
  396. - Source:增加 ORM 接口,统一方法;
  397. - Web:增加 HTTP 头,应对 Edge 浏览器的检查;
  398. - Web:新增 Response.Binary 重载,支持指定文件路径;
  399. - Web:ApiOptions 支持设置 X-Content-Type-Options;
  400. - Web:Staitc 控制器对部分纯文本文件的 Content-Type 加入“utf-8”。
  401. ### 6.3.3
  402. - 全局:恢复 .NET Standard 2.0 的输出,用于支持 .NET Framework 4.6.1;
  403. - StorageUtility:优化了 ReadFile 的内存占用;
  404. - Web:优化 ApiProgram 的初始化,减少并发时的问题;
  405. - Web:Static 控制器支持列出子项。
  406. ### 6.3.2
  407. - RuntimeUtility:调整了 Assembly 的方法名称;
  408. - Surface:迁移获取字形的方法到 FormsUtility,不再提供 FontInstance 类;
  409. - Source:调整 ColumnAttribute 和 Record 的默认字段长度从 255 到 191;
  410. - Web:修正无法设置 Cookie 的问题。
  411. ### 6.3.1
  412. - Source:修正了多次获取 Access 密码会报错的问题;
  413. - Web:对 ApiResponse 中增加 Indented,支持对单个 API 的响应强制缩进排版。
  414. ### 6.3.0
  415. - 调整变量命名方式,统一采用 Camel 风格;
  416. - 代码优化,删除 Internals 类,降低了栈空间的占用;
  417. - Class<T>:修正判断相等时的问题;
  418. - ClockUtility:新增 Elapse 方法,用于评估 Action 的执行时长;
  419. - DateTimeUtility:已删除类,方法合并到 ClockUtility 中;
  420. - Json:可以序列化拥有 Table 特性的类型;
  421. - Json:增加了 SerializeObject 和 DeserializeObject 方法;
  422. - Json:增加了 ToCamel 方法,可将属性名首字母设置为小写;
  423. - Models:StringPairs 已实现 IToJson 接口;
  424. - RuntimeUtility:新辅助工具,由 ClassUtility 和 KernelUtility 合并而来;
  425. - RuntimeUtility:新增 InvokePublicClass,调用指定程序集中的所有公开类型;
  426. - Source:重写代码,去除了不常用的方法;
  427. - Source:修正了 MySql、SqlServer、Sqlite 的主键格式限制问题;
  428. - Source:重新加入 Access 类,暂不支持 ORM;
  429. - StorageUtility:增加方法 NewFileSystemWatcher,可添加指定路径的监视器;
  430. - StorageUtility:修正了 WriteFile 默认加入 BOM 的问题;
  431. - TextUtility:增加 IsEnglish 方法,用于判断字符串仅包含英文;
  432. - Web:重写 ApiInvoker,降低了耦合性,并支持 HTTP.sys 的服务器;
  433. - Web:GetParameter 增加参数,对值进行 Trim 处理;
  434. - Web:修正了获取 IP 的准确性问题,现在可将 IP 用于安全机制;
  435. - Web:修正了 robots.txt 的拼写错误问题;
  436. - Web:对基于 ASP.NET Core 的 Server 增加 WebSocket 支持;
  437. - Web:增加 QueryString 和 Form 方法,以兼容部分旧程序;
  438. - Web:新增 StaticController,支持 SSI,用于支持动静态混合站点;
  439. - Web:ApiOptions.Enumerate 默认值已修改为 FALSE。
  440. ### 6.2.0
  441. - Logger:重写了功能,统一日志的调用方法;
  442. - NetworkUtility:新增检测 TCP 端口 UDP 端口的方法;
  443. - StringPairs:支持检查 Key 是否存在;
  444. - WebAPI:优化参数和流程,提高运行效率,并增加定制选项;
  445. - WindowsUtility:更名为 SystemUtility,增加判断操作系统的方法。
  446. ### 6.1.0
  447. - DateTime:修正了超出范围值的问题;
  448. - TextUtility:新增 RenderMarkdown 方法,支持将 Markdown 文本转换为 HTML 文本;
  449. - TextUtility:放宽了 SafeKey 限制十六进制字符的限制,现在允许所有字母和数字;
  450. - Source:解析 Record 结构加入缓存,以提高性能;
  451. - MySql:新增 Escape 方法;
  452. - MySql:新增 QueryRecords 重载,支持分页查询;
  453. - MySql:新增 AddColumn 方法,支持增加单列;
  454. - MySql:新增 SafeTable 方法和 SafeColumn 方法,提供对表明和列名的检查;
  455. - WebAPI:支持设置 Response 的缓存过期时间(在 .NET Framework 中可能无效);
  456. - WebAPI:添加 Response.Respond(Json) 方法;
  457. - WebAPI:支持读取或设置 Cookies,且 ApiRequest 从 Cookies 中读取 Ticket;
  458. - WebAPI:Response.Text 现在默认在 Content-Type 中指定 UTF-8。
  459. ### 6.0.14
  460. - 修正了 Json.Parse 的 NULL 引用问题;
  461. - 修正了生成 MySQL 的 Insert 语句字段报错问题。
  462. ### 6.0.13
  463. - 从文本转换到 Single、Double 和 Decimal,在转换前将自动修剪;
  464. - 不再强制要求在启动 Kestrel 前调用 SetKestrelEntries。
  465. ### 6.0.12
  466. - 扩展方法 ToSingle、ToDouble、ToDecimal 支持输入百分号。
  467. ### 6.0.11
  468. - 扩展方法 ApiResponse.Respond 支持返回错误信息。
  469. ### 6.0.10
  470. - 修正 SafeKey 错误。
  471. ### 6.0.9
  472. - 调整了 TextUtility.SafeKey 的长度限制。
  473. ### 6.0.8
  474. - Query.SimpleColumn 不再去重,提升性能。
  475. ### 6.0.7
  476. - 修正 MySql 使用 List 时的性能问题。
  477. ### 6.0.6
  478. - 修正内网环境中 WebUtility.FromTrusted 的判断。
  479. ### 6.0.5
  480. - 对 WindowsUtility.RunConsole 增加重载,可按行获取输出,且可获取错误流;
  481. - 调整 FromTrusted 的规则,减少了存在反向代理时的误判。
  482. ### 6.0.4
  483. - 修正 GetClientIP 参数不生效的问题。
  484. ### 6.0.3
  485. - 修正 GetParameter 获取不到 GET 参数的问题。
  486. ### 6.0.2
  487. - 修正 GetParameter 匹配 Json 的问题。
  488. ### 6.0.1
  489. - 修正 GetParameter 匹配 Json 的问题。
  490. ### 6.0.0
  491. - 修改项目 Apewer.Library 为 Apewer;
  492. - 删除命名空间 Apewer.Common,子项移入 Apewer;
  493. - 删除命名空间 Apewer.WinForms,子项移入 Apewer.Surface;
  494. - 初步支持通过 Kestrel 启动 Web.ApiInvoker;
  495. - 修改类 ApiServer 为 ApiController;
  496. - 在 Surface.FormsUtility 中扩充了常用的方法;
  497. - DeleteFile 和 DeleteDirectory 支持使用临时目录。
  498. ### 5.10.0
  499. - 加入 FormsUtility(从原 Surface 类迁移);
  500. - 加入 WindowsUtility;
  501. - 加入 BlockUI,支持 .NET Core。
  502. ### 5.9.5
  503. - 新增 ApiClient 的上传文件功能和 GET 请求。
  504. ### 5.9.4
  505. - 新增 IEnumerable<T> 的扩展方法 ToList、IsEmpty、NotEmpty、Contains 和 Sub;
  506. - 修正 ZIP 中文文件名编码问题;
  507. - 新增 ZIP 文件压缩解压(StorageUtility)。
  508. ### 5.9.3
  509. - 修复 UdpClient.Send 无条件等待的问题。
  510. ### 5.9.2
  511. - 新增 Apewer.Network.UdpServer 的 Address 属性。
  512. ### 5.9.1
  513. - 新增 Apewer.Web.ApiClient。
  514. ### 5.9.0
  515. - 重新支持 .NET Framework 2.0。
  516. - 新增 Redis 访问;
  517. - ApiServer 新增 AllowFunction 属性,可拒绝调用 Function;
  518. - TableStructure 解析无 Column 的 Record 时不再抛出异常;
  519. - TableStructure 修正 Column 特性时默认对 String 属性使用 NText,不再抛出异常。
  520. ### 5.8.0
  521. - 加入记录日志的功能;
  522. - 加入 WebAPI 转发功能;
  523. - 扩展了 String 的 Split 方法。
  524. ### 5.7.1
  525. - 修正 MySQL 建表时的主键问题。
  526. ### 5.7.0
  527. - 新增 StorageUtility.WriteFile 重载,支持格式化的 Json;
  528. - 重写 BinaryUtility.AddTextBom 方法,提升了效率;
  529. - 限制 Key 长度为 128,Source 创建表时默认指定 Key 字段为主键;
  530. - 修正 VarChar 和 NVarChar 指定长度无效的问题。
  531. ### 5.6.6
  532. - 修正扩展方法 Set 和 Set<> 布生效的问题;
  533. - 修正扩展方法 Get<T> 的返回类型;
  534. - 增加扩展方法 TypeEquals。
  535. ### 5.6.5
  536. - 去除了无效的扩展方法 InvokeGet 和 InvokeSet;
  537. - 提供扩展方法 Get、Set、Get<> 和 Set<>。
  538. ### 5.6.4
  539. - 扩展方法 ForEachProperties 不再对 Object 类型提供。
  540. ### 5.6.3
  541. - 优化代码冗余。
  542. ### 5.6.2
  543. - 新增 PropertyInfo 的扩展方法。
  544. ### 5.6.1
  545. - 修正扩展类型 IsZero 和 NotZero 无法匹配类型的问题。
  546. ### 5.6.0
  547. - 调整目标框架为 .NET Framework 4.6.1、.NET Core 3.1 和 .NET Standard 2.1;
  548. - ApiInvoker 从 URL 路径中解析 Application 和 Function 时解析转义;
  549. - ObjectSet 和 TextSet 支持动态类型;
  550. - 修正 Json.FillObject 和 Json.FillArrray 方法报错的问题;
  551. - 新增排序方法;
  552. - 新增数字类型的扩展方法 IsZero、NotZero 和类型转换。
  553. ### 5.5.3
  554. - 新增 Json.ToLower 扩展方法;
  555. - 新增 Object.Clone 扩展方法,替代原 Record.Clone 扩展方法;
  556. - String.Append 和 StringBuilder.Append 扩展方法不再需要指定类型,通过 TextUtility.Join 合并参数。
  557. ### 5.5.2
  558. - Json.Parse 方法将检测是否实现 IToJson 接口,实现接口的类型,使用 ToJson 方法解析。
  559. ### 5.5.1
  560. - 更新了 API 选项默认值;
  561. - 修正 Record.Clone 扩展方法;
  562. - 修改了 Request.GetParameter 的返回值。
  563. ### 5.5.0
  564. - 修正了会导致 CPU 负载异常的类型;
  565. - 移动了 Extension,大部分扩展方法不再需要引用命名空间;
  566. - 去除了 .NET Framework 4.0 目标框架。
  567. ### 5.4.0
  568. - MySQL 的 Execute 方法支持参数;
  569. - 新增 Record 对 Independent 特性的支持。
  570. ### 5.3.3
  571. - 修正 Cron 不再启动的问题。
  572. ### 5.3.2
  573. - 修正检测 Cron 类型为 0 的问题。
  574. ### 5.3.1
  575. - 对 Cron 的 Write 加入日志。
  576. ### 5.3.0
  577. - 加入 Apewer.Web.Cron;
  578. - 加入扩展方法 Apewer.Source.Record.Clone()。
  579. ### 5.2.5
  580. - 开放 IsInherits 方法。
  581. ### 5.2.4
  582. - 加入 DateTime.Origin 静态属性。
  583. ### 5.2.3
  584. - 修正 Record 从 Apewer.Library 中加载类型失败的问题。
  585. ### 5.2.2
  586. - 修正 ApiInvoker 从 Apewer.Library 中加载类型失败的问题。
  587. ### 5.2.1
  588. - 修正 ApiInvoker 从 Apewer.Library 中加载类型失败的问题。
  589. ### 5.2.0
  590. - 加入 MySQL 客户端,支持 .NET Framework 访问 MySQL 数据库。
  591. ### 5.1.5
  592. - 修正了 TableStructure.ParseModel 解析过程中的下划线错误。
  593. ### 5.1.4
  594. - 修正了 TableStructure.ParseModel 解析指定列名的错误。
  595. ### 5.1.3
  596. - 限制了 Json.Parse 对 Assembly 的解析递归层数。
  597. ### 5.1.2
  598. - 限制了 Json.Parse 对 Type 的解析递归层数。
  599. ### 5.1.1
  600. - 修正 Record.EnumerateTableTypes 当前类的问题;
  601. - 加入 NotEmpty 扩展方法。
  602. ### 5.1.0
  603. - ApiRequest 加入 Session 和 Page 属性,用于记录日志。
  604. ### 5.0.7
  605. - ApiResponse 加入 Redirect 和 Stop 扩展方法;
  606. - ApiInvoker 支持调用独立 ApiServer,不强制要求指定 Function 属性。
  607. ### 5.0.6
  608. - 优化列举 Applications 的性能;
  609. - 新增 Record.EnumerateTableTypes 方法,用于创建表。
  610. ### 5.0.5
  611. - 新增 IndependentAttribute;
  612. - 对 Json.Parse 方法、Json.FillObject 方法和 Json.FillArray 加入 force 参数;
  613. - ApiRequest.Url 类型修改为 System.Uri 对象;
  614. - ApiInvoke 仅在 Application 或 Function 为空时显示列表;
  615. - ApiInvoke 列举 Applications 时加入 Module 属性;
  616. - ApiInvoke 支持 ApiServer 的独立特性,设置 ApiServer 属性后调用 AfterInitialized。
  617. ### 5.0.4
  618. - 修正 GetSegmentalUrl 带有斜杠的问题。
  619. ### 5.0.3
  620. - 修正 CreateTable 方法生成表时的公共列排序问题;
  621. ### 5.0.2
  622. - Json.Parse 方法不再无限解析 Assembly 类型;
  623. - 修改了 HttpClient 的方法名称,减少重载方法;
  624. - 对 ApiInvoker 输出的 Exception 加入类型;
  625. - 修正 DateTimeUtility 中关于时间戳的说明;
  626. - 增加 Extensions.GetFirst 扩展方法。
  627. ### 5.0.1
  628. - Json.Parse 方法解析 IList 或 IDictionary 时,不再要求 SerializableAttribute 特性;
  629. - SqlServer 类中的 QueryAllRecords 更名为 QueryRecords。
  630. ### 5.0.0
  631. - 加入 Microsoft.NET.Sdk,项目同时支持 .NET Framework 4.0、.NET Framework 4.6.1 和 .NET Standard 2.0;
  632. - Apewer.Library.Windows 中无需外部引用的类已经移动到 Apewer.Library;
  633. - 删除了命名空间 Apewer.Utilities,原类已经移动到 Apewer;
  634. - 删除了 Apewer.Web.Invoker,更换为 Apewer.Web.ApiInvoker。
  635. ---
  636. 更早版本 ...