Compare commits

...

250 Commits
v1.0.0 ... main

Author SHA1 Message Date
tk
220b19d152 refactor: ♻️ 框架代码同步 2025-04-16 16:00:58 +08:00
tk
7d0fcd4906 refactor: ♻️ 框架代码同步
[skip ci]
2025-04-16 15:54:10 +08:00
tk
9b6e053721 fix: 🐛 初次访问时前端js错误 2025-04-07 16:38:47 +08:00
snail1519
eef6661c92 fix: flowchart显示问题 2025-04-02 11:11:12 +08:00
tk
7a7bf0e578 build: 📦 build err 2025-03-26 15:49:32 +08:00
tk
d4956c94e0 chore: 🔨 界面优化
[skip ci]
2025-03-26 15:39:23 +08:00
tk
20f09c8ea1 build: 📦 dotnet sdk 升级至 9.0.202 2025-03-24 11:28:20 +08:00
tk
e0a4a40314 refactor: ♻️ 文件上传功能调整 2025-03-19 16:31:17 +08:00
tk
6fed7ec752 chore: 🔨 事件发布器接口通道数量
[skip ci]
2025-03-06 09:38:53 +08:00
tk
4afda0fbde perf: nuget update
[skip ci]
2025-02-27 14:32:16 +08:00
tk
a3b4608919 build: 📦 新的解决方案文件格式 slnx 支持来了 2025-02-19 10:54:46 +08:00
tk
9155db4d9d perf: package update
[skip ci]
2025-02-13 16:24:33 +08:00
tk
72cc3c42fd chore: 🔨 npm update 2025-01-14 15:31:33 +08:00
tk
f50dfc8f19 refactor: ♻️ 计划作业模块 2025-01-07 15:41:18 +08:00
tk
e82a172598 perf: 事件总线精简优化 2025-01-03 17:27:01 +08:00
tk
c9e570f11d perf: nuget update
[skip ci]
2025-01-03 09:04:35 +08:00
tk
278e10d8fc fix: 🐛 build error
BREAKING CHANGE: [skip ci]
2024-12-31 16:01:42 +08:00
tk
ddac448087 perf: 子模块更新 2024-12-31 15:56:55 +08:00
nsnail
a2de0bcbd1 chore: 🔨 补充语言文件 2024-12-27 22:14:06 +08:00
tk
13a4896828 perf: 子模块更新 2024-12-27 15:02:12 +08:00
tk
6580516e81 perf: nuget update 2024-12-27 11:35:32 +08:00
tk
d827d56e49 perf: nuget update 2024-12-26 18:59:16 +08:00
tk
b0a4f46af3 chore: 🔨 框架代码同步 2024-12-26 16:01:37 +08:00
tk
7b8f1b0fcd perf: nuget update 2024-12-24 18:12:26 +08:00
tk
52e7f93cc2 fix: 🐛 scTable dataChanged 2024-12-23 11:52:34 +08:00
tk
81ac00d1f1 style: 💄 code format 2024-12-23 11:16:11 +08:00
tk
9c81ce6f9f fix: 🐛 前端警告 2024-12-23 10:59:51 +08:00
tk
ac4bb50b66 fix: 🐛 档案管理空列表loading状态 2024-12-23 10:34:15 +08:00
tk
377c28c570 fix: 🐛 样式问题 2024-12-20 18:47:56 +08:00
tk
4d45a72243 chore: 🔨 表格行双击查看
[skip ci]
2024-12-20 10:35:11 +08:00
tk
f3651f1432 perf: 精简全局组件 2024-12-19 17:41:11 +08:00
tk
ce697588f5 refactor: ♻️ 异常请求输出追踪标识 2024-12-19 10:10:39 +08:00
nsnail
93fe9e41b7 docs: Update README.md
[skip ci]
2024-12-18 16:42:57 +08:00
nsnail
5815ca8594 doc: Update README.md
[skip ci]
2024-12-18 16:28:02 +08:00
nsnail
44e21423cc doc: Update README.md 2024-12-18 16:26:23 +08:00
tk
f7c91252cd chore: 🔨 用户列表左侧部门树形菜单 2024-12-18 15:24:47 +08:00
tk
ef17a8bd79 chore: 🔨 时间选择器调整
[skip ci]
2024-12-18 14:00:30 +08:00
tk
e5e1d6f50f refactor: ♻️ 框架代码同步 2024-12-16 11:40:11 +08:00
tk
7c47c09838 chore(release): 2.3.1 2024-12-13 16:15:52 +08:00
tk
b1678e2537 refactor: ♻️ 前端体验优化
[skip ci]
2024-12-13 16:15:02 +08:00
nsnail
442a69f90d fix: 🐛 修复一些样式问题 2024-12-12 23:23:39 +08:00
nsnail
f1fd53f72b build: 📦 git.config
[skip ci]
2024-12-12 20:12:04 +08:00
tk
ae4ed8b3ef chore(release): 2.3.0 2024-12-12 18:16:03 +08:00
tk
4e4a1d0dff fix: 🐛 个性主题色冲突 2024-12-12 18:04:08 +08:00
tk
098cfc135e feat: 框架代码同步 2024-12-12 10:05:58 +08:00
tk
0285eea352 refactor: ♻️ 框架代码同步 2024-12-11 09:36:10 +08:00
tk
725662693b feat: 框架代码同步 2024-12-10 14:50:16 +08:00
tk
9504c96f40 style: 💄 code format
[skip ci]
2024-12-09 20:07:13 +08:00
tk
d1e4704adc revert: appConfig.js 2024-12-09 20:05:05 +08:00
tk
0b036e9d67 feat: 分组统计功能 2024-12-09 19:37:18 +08:00
tk
89846d9783 refactor: ♻️ enum 扩展方法 2024-12-07 15:27:07 +08:00
nsnail
194eb89d31 chore: 🔨 移动端样式调整
[skip ci]
2024-12-06 21:46:07 +08:00
tk
d622111f53 refactor: ♻️ 生成前端apijs 2024-12-06 17:19:30 +08:00
tk
c2a2b27afd refactor: ♻️ curdModule 新增Edit方案
[skip ci]
2024-12-06 17:14:17 +08:00
tk
4228bd5c32 refactor: ♻️ 国家代码表重构
[skip ci]
2024-12-06 10:27:24 +08:00
tk
b24642e5c9 chore(release): 2.2.1 2024-12-04 16:36:31 +08:00
tk
4eecc0b4ce fix: 🐛 version lock
[skip ci]
2024-12-04 16:35:20 +08:00
tk
01058ba728 fix: 🐛 version 条件重复指定 2024-12-03 11:05:27 +08:00
nsnail
a6f6a8f0a3 perf: nuget update 2024-11-29 22:42:47 +08:00
nsnail
4f12b5064d Update README.md 2024-11-29 22:21:30 +08:00
nsnail
2acf88cad1 style: 💄 code format 2024-11-29 22:13:01 +08:00
tk
180119019c chore: 🔨 sys_Menu.json
[skip ci]
2024-11-29 18:22:07 +08:00
tk
f5203782aa chore: 🔨 iSelect 扩展方法增强
[skip ci]
2024-11-29 17:44:13 +08:00
tk
4874a58eee perf: nuget update 2024-11-29 17:40:19 +08:00
tk
b4ca6d5626 style: 💄 解决方案文件段落整理
[skip ci]
2024-11-29 11:16:26 +08:00
tk
63d7a3ed4a refactor: ♻️ iSelect 扩展方法
[skip ci]
2024-11-29 11:08:37 +08:00
nsnail
ef2a0c3280 fix: 🐛 editUser 2024-11-29 09:28:05 +08:00
nsnail
c69655e353 build: 📦 refs update
[skip ci]
2024-11-29 00:35:42 +08:00
nsnail
f0e1155ee8 build: 📦 修复项目引用路径问题
[skip ci]
2024-11-29 00:30:10 +08:00
nsnail
03745ff767 build: 📦 更新子模块
[skip ci]
2024-11-28 23:24:03 +08:00
nsnail
ee94d47551 refactor: ♻️ freeSql 重编译版本
[skip ci]
2024-11-28 23:18:25 +08:00
nsnail
155deedd15
refactor: ♻️ 减少一些条件编译语句 (#229)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-28 15:51:09 +08:00
nsnail
a0a04590c9
build: 📦 rename.csx (#228)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-28 10:27:47 +08:00
nsnail
c88c8d293d
fix: 🐛 按钮文字提示 (#227)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-27 18:38:52 +08:00
nsnail
7501138e31
chore: 🔨 界面优化 (#226)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-27 17:58:38 +08:00
nsnail
cb75d19202
Merge pull request #225 from nsnail/release
chore(release): 2.2.0
2024-11-27 16:54:46 +08:00
tk
e8a2d27c00 chore(release): 2.2.0 2024-11-27 16:54:27 +08:00
nsnail
440c7ffcb9
chore: 🔨 分享文档链接按钮 (#224)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-27 16:54:15 +08:00
nsnail
e8b568426b
chore: 🔨 增加一个图标 (#223)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-27 16:20:17 +08:00
nsnail
37b45c9f36
perf: npm update (#222)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-27 16:04:12 +08:00
nsnail
7ed30406c9
feat: 文档管理 (#221)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-27 15:52:23 +08:00
nsnail
71bfdaafa8
fix: 🐛 用户选择器报错 (#220)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-26 10:10:25 +08:00
nsnail
cec96390a5
refactor: ♻️ 精简前端组件 (#219) 2024-11-25 22:30:45 +08:00
nsnail
0e412db6ce
perf: nuget update (#218)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-25 17:57:19 +08:00
nsnail
4d857f1861
feat: select-filter badge icon (#217)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-25 10:53:57 +08:00
nsnail
d74a7e13ef
perf: npm update (#216)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-22 18:13:17 +08:00
nsnail
2f16efd291
refactor: ♻️ 样式优化 (#215)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-22 18:12:03 +08:00
nsnail
81d9b0b3bb
feat: 菜单复制 (#214)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-22 14:04:33 +08:00
nsnail
ef2f0de095
fix: 🐛 导出界面报错 (#213)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-22 13:23:32 +08:00
nsnail
6d87d8e9cd
chore: 🔨 用户管理-角色排序 (#212)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-22 12:11:10 +08:00
nsnail
69dc407002
chore: 🔨 userbar下拉菜单弹出方式 (#211)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-22 11:52:55 +08:00
nsnail
6c71c74a27
fix: 🐛 请求日志批量插入,漏写了登录日志 (#210)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-22 11:16:18 +08:00
nsnail
4e9f605ea2
fix: 🐛 idd (#208) 2024-11-16 14:40:21 +08:00
nsnail
d28d7e9a18
chore: 🔨 导出文件时,如勾选,只导出勾选项 (#207) 2024-11-16 12:44:32 +08:00
nsnail
a6018edb87
style: 💄 code format (#206)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-15 19:22:06 +08:00
nsnail
841a4195e7
fix: 🐛 导出文件的responseType (#205)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-15 18:34:45 +08:00
nsnail
5e9b67bca8
refactor: ♻️ 精简框架分层 (#204)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-15 18:27:21 +08:00
nsnail
76e5fdcd94
Merge pull request #203 from nsnail/release
chore(release): 2.1.0

[skip ci]
2024-11-15 16:48:47 +08:00
tk
c68f695555 chore(release): 2.1.0 2024-11-15 16:48:25 +08:00
nsnail
587b22014d
style: 💄 code format (#202)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-15 16:44:54 +08:00
nsnail
2f300285aa
feat: 首页仪表板自定义布局 (#201)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-15 15:46:15 +08:00
nsnail
1743f4ff28
build: 📦 添加git子模块 (#200)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-13 19:00:15 +08:00
nsnail
7fc5fca5d9
build: 📦 nuget package与 project refrence 切换脚本 (#199)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-13 18:50:24 +08:00
nsnail
d8dbb28cfc
fix: 🐛 404 (#198)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-12 19:01:07 +08:00
nsnail
27aafacd54
Tk (#197)
* refactor: ♻️ 业务代码项目文件名与框架代码项目文件名区分

* refactor: ♻️ 业务代码项目文件名与框架代码项目文件名区分

---------

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-12 18:44:13 +08:00
nsnail
e6ce5afd99
refactor: ♻️ 业务代码项目文件名与框架代码项目文件名区分 (#196)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-12 18:34:14 +08:00
nsnail
d1503a859b
docs: 📝 rEADME (#195)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-12 17:57:36 +08:00
nsnail
26e3698f57
fix: 🐛 --el-color-primary 变量有闪烁现象 (#194)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-12 10:33:53 +08:00
nsnail
3069b8fbc4
fix: 🐛 module name (#193)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-11 16:36:19 +08:00
nsnail
4d63bd6bf5
refactor: ♻️ 主题颜色变量封装 (#192)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-11 16:14:51 +08:00
nsnail
f00046265a
refactor: ♻️ 取消插入种子数据后退出程序 (#191) 2024-11-08 20:43:20 +08:00
nsnail
0848c8b7e5
refactor: ♻️ seedDataInsertedEventAsync (#190)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-08 14:55:35 +08:00
nsnail
8479f69bdc
feat: 用户选择器 (#189)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-06 11:48:36 +08:00
nsnail
a454f2ab2d
Merge pull request #187 from nsnail/release
chore(release): 2.0.0
[skip ci]
2024-11-04 17:23:27 +08:00
tk
3293683835 chore(release): 2.0.0 2024-11-04 17:23:02 +08:00
nsnail
e71661663f
refactor: ♻️ 移除Newtonsoft.Json包 (#186)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-04 16:18:47 +08:00
nsnail
13ba536df2
refactor: ♻️ 框架&业务代码分离 (#185)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-11-04 12:06:50 +08:00
nsnail
072cc1e491
docs: 📝 在线预览地址变更 (#184)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-10-31 10:19:07 +08:00
nsnail
6fbb519256
refactor: ♻️ projectUsings (#183)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-10-30 16:20:18 +08:00
nsnail
a4e63c971d
refactor: ♻️ projectUsings (#182)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-10-30 15:27:25 +08:00
nsnail
bac4a39544
refactor: ♻️ 框架代码同步 (#181)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-10-30 14:40:52 +08:00
nsnail
f0c3ec109f
revert: appConfig.js (#180)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-10-14 15:58:51 +08:00
nsnail
000e3d68a8
fix: 🐛 public const int SECS_CACHE_LOGIN_BY_USER_ID = 3600 * 24 * 30; // 秒:缓存时间-通过用户编号登录的用户信息 (#179)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-10-14 14:15:32 +08:00
nsnail
58e4572723
feat: 框架代码同步 (#178)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-10-14 13:55:53 +08:00
nsnail
dfe6b03b21
style: 💄 code format (#175)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-08-29 17:41:28 +08:00
nsnail
135f082b06
style: 💄 code format (#174)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-08-29 17:31:11 +08:00
nsnail
c088492cfa
feat: 框架代码同步 (#173)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-08-29 17:21:06 +08:00
nsnail
b9b228c9e1
Merge pull request #171 from nsnail/tk
feat:  查询过滤器保存
2024-08-13 11:34:49 +08:00
tk
779d8e511a feat: 查询过滤器保存
页面定时刷新
WebSocket断线自动重连
2024-08-13 11:34:28 +08:00
nsnail
6922a863ec
Merge pull request #170 from nsnail/release
chore(release): 1.6.0
2024-08-12 11:44:45 +08:00
tk
5b69ce8688 chore(release): 1.6.0 2024-08-12 11:44:27 +08:00
nsnail
cd8ed674e0
feat: 移除RedLocker,更改为自实现 (#169)
用户表增加最后登录时间字段
列表查询多字段模糊查询改为单字段精确查询
WebSocket版本更新检查
前端自定义字段筛选
暗黑模式样式调整
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-08-12 11:44:14 +08:00
nsnail
4733adede5
fix: 🐛 ip归属地查询接口地址更新 (#168)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-08-02 09:26:37 +08:00
nsnail
e00c30c961
fix: 🐛 站内信角标颜色 (#167)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-29 18:28:20 +08:00
nsnail
6b63250039
fix: 🐛 ip显示问题 (#166)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-29 18:19:58 +08:00
nsnail
2fa8b56f9c
chore: 🔨 前端布局样式调整 (#165)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-29 16:54:00 +08:00
nsnail
2b4c25c07c
refactor: ♻️ 批量查询ip归属地 (#164)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-29 11:35:26 +08:00
nsnail
7c56c8d571
fix: 🐛 trimSuffix (#163)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-26 19:03:21 +08:00
nsnail
5fb6f7bea7
Merge pull request #162 from nsnail/release
chore(release): 1.5.0
2024-07-26 17:48:07 +08:00
tk
e48b425121 chore(release): 1.5.0 2024-07-26 17:47:40 +08:00
nsnail
faaf5aa0fc
feat: 登录日志独立存储 (#161)
请求日志自动分表
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-26 17:46:56 +08:00
nsnail
e1bea2ec31
chore: 🔨 更换ip归属地查询接口 (#160)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-23 09:38:07 +08:00
nsnail
33e60a5bd7
style: 💄 code format (#159)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-23 09:34:57 +08:00
nsnail
1a28e8d5a6
feat: 框架代码同步 (#158)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-22 12:58:10 +08:00
nsnail
60ec6ea2c1
chore: 🔨 默认过滤禁用数据 (#157)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-11 16:17:15 +08:00
nsnail
6d4ccf3445
feat: cron表达式的自然语言表达 (#156)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-09 14:17:17 +08:00
nsnail
1733802e02
fix: 🐛 error CS0117: 'Numbers' does not contain a definition for 'SECS_CACHE_DIC_CATALOG_CODE' (#155)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-08 21:25:33 +08:00
nsnail
aaea28389a
feat: 请求日志增加TraceId (#154)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-08 20:50:53 +08:00
nsnail
be5b9a160d
feat: logoBar显示程序版本号 (#153)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-04 21:14:16 +08:00
nsnail
67eaa5b783
refactor: ♻️ 抽取公共导出方法 (#152)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-04 09:29:18 +08:00
nsnail
8b01112f42
Merge pull request #151 from nsnail/release
chore(release): 1.4.0
2024-07-03 22:11:37 +08:00
tk
d6a479b693 chore(release): 1.4.0 2024-07-03 22:11:18 +08:00
nsnail
e1b0030193
feat: 框架代码同步 (#150)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-07-03 22:09:58 +08:00
nsnail
beba4124b0
Merge pull request #149 from nsnail/release
chore(release): 1.3.0
2024-06-24 16:06:05 +08:00
tk
8a29640aeb chore(release): 1.3.0 2024-06-24 16:05:37 +08:00
nsnail
8bc8aa960c
feat: 框架代码同步 (#148)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-24 16:04:28 +08:00
nsnail
d00f0d2d9c
fix: 🐛 补充多语种文件 (#147)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-18 17:33:23 +08:00
nsnail
1442e0a37c
feat: 补充多语种文件 (#146)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-18 17:31:22 +08:00
nsnail
6100e9e9c8
feat: 前端版本更新器 (#145)
替换tinymce编辑器为aiEditor

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-17 21:47:04 +08:00
nsnail
ae2d1c4932
feat: 框架代码同步 (#144)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-15 21:41:03 +08:00
nsnail
366a26a5cd
docs: 📝 readme文档更新 (#143)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-12 22:49:59 +08:00
nsnail
8b53f66331
perf: 升级至.net9 prev5 (#142)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-12 21:50:36 +08:00
nsnail
705d027da4
fix: 🐛 操作日志不显示userName (#141)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-12 21:47:08 +08:00
nsnail
a3ab97019d
feat: 更新实体增加sql过滤参数 (#140)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-11 18:10:02 +08:00
nsnail
608a1ded5c
feat: 框架代码同步 (#139)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-09 22:46:54 +08:00
nsnail
366ca0d237
chore: 🔨 参数配置忽略版本锁 (#138)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-07 11:05:05 +08:00
nsnail
56b111b1cf
refactor: ♻️ 基础框架的实体更新逻辑 (#137)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-07 00:13:14 +08:00
nsnail
f5bd69ef60
Merge pull request #136 from nsnail/release
chore(release): 1.2.0
2024-06-07 00:05:44 +08:00
tk
ddf891e3bc chore(release): 1.2.0 2024-06-07 00:05:05 +08:00
nsnail
7ae473d492
feat: 增强作业执行记录页面 (#135) 2024-06-04 16:08:18 +08:00
nsnail
c20a6c369d
fix: 🐛 字段长度 (#134)
[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-04 15:26:28 +08:00
nsnail
57b71e1354
feat: 计划作业-上次执行耗时 (#133)
Co-authored-by: tk <fiyne1a@dingtalk.com>
2024-06-04 11:57:15 +08:00
nsnail
127f6e9f6c
feat: 默认头像根据用户名绘制svg (#132) 2024-05-31 16:48:11 +08:00
nsnail
d1951dbcb5
fix: 🐛 字段顺序 (#131)
[skip ci]
2024-05-30 16:55:43 +08:00
nsnail
5edcf63e24
feat: 框架代码同步 (#130)
[skip ci]
2024-05-29 15:03:05 +08:00
nsnail
b01b8b24ba
feat: 框架代码同步 (#129)
[skip ci]
2024-05-29 14:40:10 +08:00
nsnail
d9c7085472
docs: 📝 readme (#128)
[skip ci]
2024-05-23 18:48:37 +08:00
nsnail
a01acddb9c
chore: 🔨 喜欢就点个 Star️ 吧! (#127) 2024-05-22 19:23:36 +08:00
nsnail
e5208cd751
docs: 📝 更新 readme (#126) 2024-05-22 18:57:05 +08:00
nsnail
dc326c324c
perf: 升级至.net9 prev4 (#125)
[skip ci]
2024-05-22 18:55:08 +08:00
nsnail
e0d15f8039
feat(frontend): 手机端分页控件显示总条数 (#124) 2024-05-17 16:23:30 +08:00
nsnail
169ab08b88
chore: 🔨 switcher (#123)
[skip ci]
2024-05-16 09:44:02 +08:00
nsnail
3b8336105a
feat: 手动执行计划作业 (#122) 2024-05-15 14:50:26 +08:00
nsnail
7214a22ea5
docs: 📝 更新 README (#121)
[skip ci]
2024-05-14 17:24:56 +08:00
nsnail
3152a8d3e8
fix(backend): 🐛 更新计划作业在sqlite数据库环境报错 (#120) 2024-05-14 15:37:51 +08:00
nsnail
40e8eff5f3
perf(backend): nuget update (#119)
[skip ci]
2024-05-13 16:12:10 +08:00
nsnail
47e67dd503
feat: naColId组件 (#118) 2024-05-13 11:34:43 +08:00
nsnail
903ea1820a
Merge pull request #117 from nsnail/tk
fix: 🐛 take count
2024-04-30 11:27:49 +08:00
tk
c08ea62064 fix: 🐛 take count
[skip ci]
2024-04-30 11:27:26 +08:00
nsnail
4860299959
Merge pull request #116 from nsnail/tk
docs: 📝 更新日志修改
2024-04-29 19:02:56 +08:00
tk
72f9d1a3ec docs: 📝 更新日志修改 2024-04-29 19:02:36 +08:00
nsnail
98718a010c
Merge pull request #115 from nsnail/release
chore(release): 1.1.1
2024-04-29 18:53:23 +08:00
tk
adfc8a7c74 chore(release): 1.1.1 2024-04-29 18:52:12 +08:00
nsnail
427057b42d
ci: 🎡 docker发布脚本 (#114)
[skip ci]
2024-04-29 18:51:55 +08:00
nsnail
823efd4044
ci: 🎡 工作流脚本修改 (#113) 2024-04-29 18:28:59 +08:00
nsnail
e43439a118
chore(release): 1.1.0 2024-04-29 18:25:36 +08:00
nsnail
be047540fe
ci: 🎡 版本发布脚本 (#111) 2024-04-29 18:16:54 +08:00
nsnail
55594b72c2
ci: 🎡 版本发布脚本 (#110) 2024-04-29 18:14:10 +08:00
nsnail
a330495624
style: 💄 code format (#109)
[skip ci]
2024-04-26 16:35:11 +08:00
nsnail
fc40170009
chore: 🔨 dotSettings (#108)
[skip ci]
2024-04-26 15:44:39 +08:00
nsnail
59c85cef21
fix: 🐛 时区问题 (#107)
[skip ci]
2024-04-26 10:55:36 +08:00
nsnail
d83cab1c3e
style: 💄 editorConfig文件编码 (#106)
[skip ci]
2024-04-25 22:02:56 +08:00
nsnail
f005da8db3
style: 💄 代码格式整理 (#105) 2024-04-25 21:59:54 +08:00
nsnail
6bd6e62fb6
refactor: ♻️ bizServer 更名为 AdmServer (#104) 2024-04-25 18:32:14 +08:00
nsnail
149e1afa53
feat: 首页仪表面板 (#103)
[skip ci]
2024-04-25 18:26:57 +08:00
nsnail
8f69c2907b
fix: 🐛 'Numbers' does not contain a definition for 'CACHE_SECS_DEFAULT' (#102) 2024-04-22 21:31:34 +08:00
nsnail
a5b47c8d6b
refactor: ♻️ 清理无用代码 (#101) 2024-04-22 21:24:04 +08:00
nsnail
3847d6fdbb
feat: 前端表格高级筛选 (#100)
* chore: 🔨 css 基础单位

[skip ci]

* fix: 🐛 ca2263 System.Enum.GetValues<TEnum>()

[skip ci]

* feat:  前端表格高级筛选

[skip ci]
2024-04-22 21:16:53 +08:00
nsnail
1dc953a2b2
Tk (#99)
* chore: 🔨 css 基础单位

[skip ci]

* fix: 🐛 ca2263 System.Enum.GetValues<TEnum>()

[skip ci]
2024-03-21 21:55:16 +08:00
nsnail
d052e43b86
chore: 🔨 css 基础单位 (#98) 2024-03-21 21:47:47 +08:00
nsnail
c117ddfe7a
fix: 🐛 低版本jetbrains.resharper.globaltools搞乱了代码 (#97) 2024-03-02 23:23:18 +08:00
nsnail
a37acc4b55
feat: 版本更新日志组件 (#96) 2024-03-02 23:06:04 +08:00
nsnail
8fee14cd6e
fix: 🐛 在弹窗界面中引用的列表组件,点击重置搜索条件按钮时,会关闭弹窗的bug (#95) 2024-02-27 18:31:08 +08:00
nsnail
802251e423
fix: 🐛 tinymce editor css 加载路径错误 (#94) 2024-02-27 09:58:16 +08:00
nsnail
5fe73878a2
fix: 🐛 tinymce editor css 加载路径错误 (#93) 2024-02-27 09:33:06 +08:00
nsnail
bde9fb1ea2
feat: cron表达式选择器 (#92) 2024-02-26 18:17:18 +08:00
nsnail
6c2d1676e4
feat: 快捷启用/禁用用户 (#91)
fix: 前端界面一些缺陷
2024-02-22 23:01:19 +08:00
nsnail
ad3eab929d
perf: 升级至.NET9 (#90) 2024-02-20 15:05:38 +08:00
nsnail
6f89015198
feat: 计划作业执行记录 (#89)
顶部通栏黑夜模式开关
计划作业快捷预览面板
2024-02-18 14:43:22 +08:00
nsnail
6f32acaacf
style: 💄 代码整理 (#88) 2024-02-02 18:16:51 +08:00
nsnail
8293ec0297
feat: 计划作业 (#87) 2024-02-02 14:05:39 +08:00
nsnail
473b0c26f2
perf: 依赖组件升级 (#86) 2024-01-26 16:59:16 +08:00
nsnail
339a15e024
chore: 🔨 模型约束修改 (#85) 2024-01-26 16:57:02 +08:00
nsnail
6615df3399
fix: 🐛 前端样式问题 (#84) 2024-01-25 16:13:12 +08:00
nsnail
35411b8c38
style: 💄 代码样式 (#83) 2024-01-23 10:50:26 +08:00
nsnail
9a8b159c81
perf: nuget update (#82) 2024-01-23 09:56:28 +08:00
nsnail
10ff917799
Update README.md (#81) 2024-01-13 12:34:09 +08:00
nsnail
db6630afb8
perf: 升级dotnet至8.0.1 (#80) 2024-01-12 17:47:38 +08:00
nsnail
027803e451
perf: nuget update (#79) 2024-01-12 17:18:59 +08:00
nsnail
05ed3d3746
feat: 将数据库结构同步和种子数据初始化作为命令行开关 (#78) 2024-01-05 16:08:50 +08:00
nsnail
22628e79ca
perf: 依赖组件升级 (#77) 2024-01-04 09:30:11 +08:00
nsnail
52ddf273c8
fix: 🐛 小问题 (#76) 2023-12-28 15:30:37 +08:00
nsnail
96e7e3384f
perf: nuget update (#75) 2023-12-27 17:37:44 +08:00
nsnail
ee93e9c0a4
build: 📦 构建脚本优化 (#74) 2023-12-15 17:38:31 +08:00
nsnail
fe41974ed6
chore: 🔨 资源文件拆分 (#73) 2023-12-13 12:01:45 +08:00
nsnail
3e6b8e6c35
perf: nuget update (#72) 2023-12-08 10:41:08 +08:00
nsnail
904df511b9
style: 💄 jetbrains.resharper.globaltools 升级到 2023.3 (#70) 2023-12-08 10:24:06 +08:00
nsnail
0059052b87
perf: 前端依赖组件升级 (#69) 2023-12-01 09:11:19 +08:00
nsnail
3376fbbdfa
chore: 🔨 代码细节调整 (#68) 2023-11-30 13:17:02 +08:00
nsnail
bebddb3558
build: 📦 精简根目录构建文件 (#67) 2023-11-23 21:43:53 +08:00
nsnail
0049536d2e
build: 📦 完善构建脚本 (#66)
* style: 💄 代码样式

* style: 💄 代码格式整理

* build: 📦 完善构建脚本
2023-11-23 18:54:26 +08:00
nsnail
9134c4fe01
feat: 日志管理独立出来、增加登录日志界面 (#65) 2023-11-22 18:37:48 +08:00
nsnail
20195e7eaf
build: 📦 整理构建相关的工程文件 (#64) 2023-11-22 16:02:07 +08:00
nsnail
b4b4f23968
build: 📦 将 编译器警告信息的屏蔽项目 从editor.config移至Directory.Build.props (#63) 2023-11-20 20:54:09 +08:00
nsnail
36c20b813d
perf: 引入 Microsoft.VisualStudio.Threading.Analyzers 分析器 (#62) 2023-11-20 18:11:44 +08:00
nsnail
b6bbd8dc88
docs: 📝 使用vitepress搭建使用手册 (#61) 2023-11-18 22:22:49 +08:00
nsnail
ec698ce4db
fix: 🐛 请求日志客户端IP显示不正确 (#60) 2023-11-18 19:07:13 +08:00
nsnail
0986a15039
ci: 🎡 github actions 拉取tags 使minver正常工作 (#59) 2023-11-17 20:33:42 +08:00
nsnail
cb052577af
docs: 📝 package.json (#58) 2023-11-17 19:31:59 +08:00
nsnail
4aef7cb307
docs: 📝 变更日志 (#57) 2023-11-17 19:24:43 +08:00
1218 changed files with 40160 additions and 61533 deletions

View File

@ -64,7 +64,7 @@ module.exports = {
maxSubjectLength: Infinity, maxSubjectLength: Infinity,
minSubjectLength: 0, minSubjectLength: 0,
scopeOverrides: undefined, scopeOverrides: undefined,
defaultBody: '', defaultBody: '[skip ci]',
defaultIssues: '', defaultIssues: '',
defaultScope: '', defaultScope: '',
defaultSubject: '' defaultSubject: ''

View File

@ -0,0 +1 @@
drone workflows

View File

@ -1,78 +1,59 @@
# 此文件为 EditorConfig 配置文件,用于设置跨编辑器的代码格式化规则。
# root = true 表示此文件是根配置文件。
root = true root = true
[*] [*]
charset = utf-8 charset = utf-8 # 文件字符集为 UTF-8
end_of_line = lf end_of_line = lf # 行结束符为 LF
ij_xml_attribute_wrap = off ij_xml_attribute_wrap = off # IntelliJ IDEA 中 XML 属性不换行
ij_xml_text_wrap = off ij_xml_text_wrap = off # IntelliJ IDEA 中 XML 文本不换行
indent_size = 4 indent_size = 4 # 缩进大小为 4 个空格
indent_style = space indent_style = space # 使用空格进行缩进
insert_final_newline = false insert_final_newline = false # 不在文件末尾插入空行
trim_trailing_whitespace = true max_line_length = 150 # 行长度限制为 150 个字符
trim_trailing_whitespace = true # 删除行尾的空格
[{*.json,*.yml}] [{*.json,*.yml}]
indent_size = 2 indent_size = 2 # 对于 JSON 和 YAML 文件,缩进大小为 2 个空格
[*.cs] [*.cs]
dotnet_analyzer_diagnostic.severity = warning dotnet_analyzer_diagnostic.severity = warning # 设置 C# 文件中所有 dotnet_analyzer_diagnostic 的严重性级别为 warning
dotnet_diagnostic.CA1707.severity = none
dotnet_diagnostic.IDE0005.severity = none
dotnet_diagnostic.IDE0008.severity = none
dotnet_diagnostic.IDE0010.severity = none
dotnet_diagnostic.IDE0028.severity = none
dotnet_diagnostic.IDE0055.severity = none
dotnet_diagnostic.IDE0160.severity = none
dotnet_diagnostic.IDE0300.severity = none
dotnet_diagnostic.IDE0305.severity = none
dotnet_diagnostic.RCS1141.severity = none
dotnet_diagnostic.RCS1142.severity = none
dotnet_diagnostic.RCS1181.severity = none
dotnet_diagnostic.S101.severity = none
dotnet_diagnostic.S1121.severity = none
dotnet_diagnostic.S1135.severity = none
dotnet_diagnostic.S125.severity = none
dotnet_diagnostic.S2094.severity = none
dotnet_diagnostic.S3604.severity = none
dotnet_diagnostic.S4663.severity = none
dotnet_diagnostic.SYSLIB1045.severity = none
# ReSharper properties # ReSharper properties
resharper_align_linq_query = true resharper_align_linq_query = true # 启用对LINQ查询的对齐
resharper_align_multiline_argument = true resharper_align_multiline_argument = true # 启用多行参数的对齐
resharper_align_multiline_array_and_object_initializer = true resharper_align_multiline_array_and_object_initializer = true # 启用多行数组和对象初始化器的对齐
resharper_align_multiline_binary_patterns = true resharper_align_multiline_binary_patterns = true # 启用多行二元模式的对齐
resharper_align_multiline_calls_chain = true resharper_align_multiline_calls_chain = true # 启用多行调用链的对齐
resharper_align_multiline_extends_list = true resharper_align_multiline_extends_list = true # 启用多行扩展列表的对齐
resharper_align_multiline_parameter = true resharper_align_multiline_parameter = true # 启用多行参数的对齐
resharper_align_multiline_property_pattern = true resharper_align_multiline_property_pattern = true # 启用多行属性模式的对齐
resharper_align_multiline_switch_expression = true resharper_align_multiline_switch_expression = true # 启用多行切换表达式的对齐
resharper_align_multiple_declaration = true resharper_align_multiple_declaration = true # 启用多个声明的对齐
resharper_align_multline_type_parameter_constrains = true resharper_align_multline_type_parameter_constrains = true # 启用多行类型参数约束的对齐
resharper_align_multline_type_parameter_list = true resharper_align_multline_type_parameter_list = true # 启用多行类型参数列表的对齐
resharper_align_tuple_components = true resharper_align_tuple_components = true # 启用元组组件的对齐
resharper_allow_comment_after_lbrace = true resharper_allow_comment_after_lbrace = true # 允许在大括号前添加注释
resharper_blank_lines_before_single_line_comment = 1 resharper_blank_lines_before_single_line_comment = 1 # 在单行注释前添加空行
resharper_csharp_empty_block_style = together_same_line resharper_csharp_empty_block_style = together_same_line # 设置空块的样式为“在一起,在同一行”
resharper_csharp_outdent_commas = true resharper_csharp_outdent_commas = true # 是否将逗号后的代码退缩
resharper_csharp_place_type_constraints_on_same_line = false resharper_csharp_place_type_constraints_on_same_line = false # 在类型约束上是否保持在同一行
resharper_csharp_stick_comment = false resharper_csharp_stick_comment = false # 是否将注释粘贴在代码行的末尾
resharper_csharp_wrap_before_comma = true resharper_csharp_wrap_before_comma = true # 在逗号前是否添加换行
resharper_indent_nested_for_stmt = true resharper_indent_nested_for_stmt = true # 是否对嵌套的for语句进行缩进
resharper_indent_nested_foreach_stmt = true resharper_indent_nested_foreach_stmt = true # 是否对嵌套的foreach语句进行缩进
resharper_indent_nested_while_stmt = true resharper_indent_nested_while_stmt = true # 是否对嵌套的while语句进行缩进
resharper_indent_preprocessor_if = usual_indent resharper_indent_preprocessor_if = usual_indent # 设置预处理器指令`if`的缩进方式
resharper_indent_preprocessor_other = usual_indent resharper_indent_preprocessor_other = usual_indent # 设置其他预处理器指令的缩进方式
resharper_int_align = true resharper_int_align = true # 启用整数对齐
resharper_keep_existing_arrangement = false resharper_keep_existing_arrangement = false # 在重新排列时是否保留现有的布局
resharper_place_linq_into_on_new_line = false resharper_place_linq_into_on_new_line = false # 是否将LINQ表达式放在新行
resharper_place_simple_embedded_statement_on_same_line = false resharper_place_simple_embedded_statement_on_same_line = false # 是否将简单的嵌入式语句放在同一行
resharper_place_simple_switch_expression_on_single_line = true resharper_place_simple_switch_expression_on_single_line = true # 是否将简单的切换表达式放在单行
resharper_wrap_before_eq = true resharper_wrap_before_eq = true # 在等号前是否添加换行
resharper_wrap_chained_method_calls = chop_if_long resharper_wrap_chained_method_calls = chop_if_long # 是否拆分链式方法调用
resharper_wrap_switch_expression = chop_if_long resharper_wrap_switch_expression = chop_if_long # 是否拆分切换表达式
# Microsoft .NET properties # Microsoft .NET properties
csharp_indent_braces = false csharp_indent_braces = false # 设置为false表示花括号不跟随代码行缩进
csharp_new_line_before_open_brace = local_functions, methods, types csharp_new_line_before_open_brace = local_functions, methods, types # 这里设置为local_functions, methods, types表示在局部函数、方法和类型定义的开放花括号前应换行

1
.github/workflows/README.md vendored Normal file
View File

@ -0,0 +1 @@
github workflows

View File

@ -1,7 +1,7 @@
# This workflow will build a .NET project # This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: CI name: nightly-build
on: on:
push: push:
@ -12,11 +12,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
node-version: [ 20.x ] node-version: [ 23.x ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Setup Node.js with:
uses: actions/setup-node@v3 fetch-depth: 0
filter: tree:0
- uses: actions/setup-node@v3
with: with:
node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}
# https://docs.github.com/zh/actions/using-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key # https://docs.github.com/zh/actions/using-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key
@ -25,28 +27,21 @@ jobs:
path: ~/.npm path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('./src/frontend/admin/package.json') }} key: ${{ runner.os }}-npm-${{ hashFiles('./src/frontend/admin/package.json') }}
restore-keys: ${{ runner.os }}-npm restore-keys: ${{ runner.os }}-npm
- name: Publish frontend - working-directory: ./src/frontend/admin
working-directory: ./src/frontend/admin run: npm install && npm run build
run: - uses: actions/setup-dotnet@v3
npm install && npm run build
- name: Setup .NET
uses: actions/setup-dotnet@v3
with: with:
dotnet-version: 8.0.x dotnet-version: 9.0.x
- uses: actions/cache@v3 - uses: actions/cache@v3
with: with:
path: ~/.nuget/packages path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }} key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: ${{ runner.os }}-nuget restore-keys: ${{ runner.os }}-nuget
- name: Publish backend - working-directory: ./src/backend/YourSolution.AdmServer.Host
working-directory: ./src/backend/NetAdmin.BizServer.Host run: dotnet publish YourSolution.AdmServer.Host.csproj -c Release
run: dotnet publish NetAdmin.BizServer.Host.csproj -c Release - run: docker build -t nsnail/netadmin:nightly .
- name: Build docker images - uses: docker/login-action@v3
run: docker build -t nsnail/netadmin .
- name: Docker login
uses: docker/login-action@v3
with: with:
username: "nsnail" username: "nsnail"
password: "${{secrets.DOCKER_PASSWORD}}" password: "${{secrets.DOCKER_PASSWORD}}"
- name: Push docker images - run: docker push nsnail/netadmin:nightly
run: docker push nsnail/netadmin

58
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,58 @@
# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: release
on:
push:
tags:
- v*
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [ 23.x ]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
filter: tree:0
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
# https://docs.github.com/zh/actions/using-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key
- uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('./src/frontend/admin/package.json') }}
restore-keys: ${{ runner.os }}-npm
- working-directory: ./src/frontend/admin
run: npm install && npm run build
- uses: actions/setup-dotnet@v3
with:
dotnet-version: 9.0.x
- uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: ${{ runner.os }}-nuget
- working-directory: ./src/backend/YourSolution.AdmServer.Host
run: dotnet publish YourSolution.AdmServer.Host.csproj -c Release
- uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
- id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/v}
- run: docker build -t nsnail/netadmin -t nsnail/netadmin:${{steps.get_version.outputs.VERSION}} .
- uses: docker/login-action@v3
with:
username: "nsnail"
password: "${{secrets.DOCKER_PASSWORD}}"
- run: docker push nsnail/netadmin
- run: docker push nsnail/netadmin:${{steps.get_version.outputs.VERSION}}

4
.gitignore vendored
View File

@ -400,6 +400,6 @@ FodyWeavers.xsd
# User Define # User Define
dist/ dist/
refs/
*.[Dd]esigner.cs *.[Dd]esigner.cs
*.db *.db
/assets/res/Ln.resx

9
.gitmodules vendored Normal file
View File

@ -0,0 +1,9 @@
[submodule "refs/Gurion"]
path = refs/Gurion
url = https://github.com/nsnail/Gurion.git
[submodule "refs/ns-ext"]
path = refs/ns-ext
url = https://github.com/nsnail/ns-ext.git
[submodule "refs/NetAdmin.FreeSql"]
path = refs/NetAdmin.FreeSql
url = https://github.com/nsnail/NetAdmin.FreeSql.git

View File

@ -1,4 +0,0 @@
[hook "startcommit"]
cmdline = dot.clean.cmd
wait = true
show = true

View File

@ -2,16 +2,238 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## 1.0.0 (2023-11-17) ### [2.3.1](https://github.com/nsnail/NetAdmin/compare/v2.1.0...v2.3.1) (2024-12-13)
### Features ### Features
* ✨ 基础模块 ([d26e4c7](https://github.com/nsnail/NetAdmin/commit/d26e4c77cc7264829a410f8503e855531f6b9c19)) * ✨ 菜单复制 ([#214](https://github.com/nsnail/NetAdmin/issues/214)) ([81d9b0b](https://github.com/nsnail/NetAdmin/commit/81d9b0b3bb280661ceffa61aa6e9d612fb7ec52c))
* ✨ 分组统计功能 ([0b036e9](https://github.com/nsnail/NetAdmin/commit/0b036e9d67ffdf7a07c772606009f02744e6a3c3))
* ✨ 框架代码同步 ([098cfc1](https://github.com/nsnail/NetAdmin/commit/098cfc135e781a0cf172cd1289e5e871c7a76419))
* ✨ 框架代码同步 ([7256626](https://github.com/nsnail/NetAdmin/commit/725662693b7b47f6fae4c1917dd8d80220c7640a))
* ✨ 文档管理 ([#221](https://github.com/nsnail/NetAdmin/issues/221)) ([7ed3040](https://github.com/nsnail/NetAdmin/commit/7ed30406c9f721a12f0b756ec8884a1882242b93))
* ✨ select-filter badge icon ([#217](https://github.com/nsnail/NetAdmin/issues/217)) ([4d857f1](https://github.com/nsnail/NetAdmin/commit/4d857f1861b1256980e7cc59e2ab6a5f7d966da2))
## 1.0.0 (2023-11-17)
### Bug Fixes
* 🐛 按钮文字提示 ([#227](https://github.com/nsnail/NetAdmin/issues/227)) ([c88c8d2](https://github.com/nsnail/NetAdmin/commit/c88c8d293d44f2707f3b5232e6a40a141af9981c))
* 🐛 导出界面报错 ([#213](https://github.com/nsnail/NetAdmin/issues/213)) ([ef2f0de](https://github.com/nsnail/NetAdmin/commit/ef2f0de095e314f34bec21c0a2ccdb51423a163b))
* 🐛 导出文件的responseType ([#205](https://github.com/nsnail/NetAdmin/issues/205)) ([841a419](https://github.com/nsnail/NetAdmin/commit/841a4195e77aa96e3c6c72626c1add3f71a310aa))
* 🐛 个性主题色冲突 ([4e4a1d0](https://github.com/nsnail/NetAdmin/commit/4e4a1d0dff7f3698e9a9cfcf46368260cfd70cbd))
* 🐛 请求日志批量插入,漏写了登录日志 ([#210](https://github.com/nsnail/NetAdmin/issues/210)) ([6c71c74](https://github.com/nsnail/NetAdmin/commit/6c71c74a27617c7d0530a5f6eaff650ecfd4eaec))
* 🐛 修复一些样式问题 ([442a69f](https://github.com/nsnail/NetAdmin/commit/442a69f90de179539f78c01d967572f83bd2eff8))
* 🐛 用户选择器报错 ([#220](https://github.com/nsnail/NetAdmin/issues/220)) ([71bfdaa](https://github.com/nsnail/NetAdmin/commit/71bfdaafa8176cf686b03244ee758de058080a71))
* 🐛 editUser ([ef2a0c3](https://github.com/nsnail/NetAdmin/commit/ef2a0c3280532ac24889279e4780a1b1a2561a6b))
* 🐛 idd ([#208](https://github.com/nsnail/NetAdmin/issues/208)) ([4e9f605](https://github.com/nsnail/NetAdmin/commit/4e9f605ea2cc6fe394068cfea5638e51920b9096))
* 🐛 version 条件重复指定 ([01058ba](https://github.com/nsnail/NetAdmin/commit/01058ba7288bcc645f66de2f78e1d659d55333cf))
* 🐛 version lock ([4eecc0b](https://github.com/nsnail/NetAdmin/commit/4eecc0b4ce09f620f83109949e4c2b67b7f8ba90))
## [2.3.0](https://github.com/nsnail/NetAdmin/compare/v2.1.0...v2.3.0) (2024-12-12)
### Features ### Features
* ✨ 基础模块 ([cd2a241](https://github.com/nsnail/NetAdmin/commit/cd2a2412b91bd07346b1d95b19102d48883479a5)) * ✨ 菜单复制 ([#214](https://github.com/nsnail/NetAdmin/issues/214)) ([81d9b0b](https://github.com/nsnail/NetAdmin/commit/81d9b0b3bb280661ceffa61aa6e9d612fb7ec52c))
* ✨ 分组统计功能 ([0b036e9](https://github.com/nsnail/NetAdmin/commit/0b036e9d67ffdf7a07c772606009f02744e6a3c3))
* ✨ 框架代码同步 ([098cfc1](https://github.com/nsnail/NetAdmin/commit/098cfc135e781a0cf172cd1289e5e871c7a76419))
* ✨ 框架代码同步 ([7256626](https://github.com/nsnail/NetAdmin/commit/725662693b7b47f6fae4c1917dd8d80220c7640a))
* ✨ 文档管理 ([#221](https://github.com/nsnail/NetAdmin/issues/221)) ([7ed3040](https://github.com/nsnail/NetAdmin/commit/7ed30406c9f721a12f0b756ec8884a1882242b93))
* ✨ select-filter badge icon ([#217](https://github.com/nsnail/NetAdmin/issues/217)) ([4d857f1](https://github.com/nsnail/NetAdmin/commit/4d857f1861b1256980e7cc59e2ab6a5f7d966da2))
### Bug Fixes
* 🐛 按钮文字提示 ([#227](https://github.com/nsnail/NetAdmin/issues/227)) ([c88c8d2](https://github.com/nsnail/NetAdmin/commit/c88c8d293d44f2707f3b5232e6a40a141af9981c))
* 🐛 导出界面报错 ([#213](https://github.com/nsnail/NetAdmin/issues/213)) ([ef2f0de](https://github.com/nsnail/NetAdmin/commit/ef2f0de095e314f34bec21c0a2ccdb51423a163b))
* 🐛 导出文件的responseType ([#205](https://github.com/nsnail/NetAdmin/issues/205)) ([841a419](https://github.com/nsnail/NetAdmin/commit/841a4195e77aa96e3c6c72626c1add3f71a310aa))
* 🐛 个性主题色冲突 ([4e4a1d0](https://github.com/nsnail/NetAdmin/commit/4e4a1d0dff7f3698e9a9cfcf46368260cfd70cbd))
* 🐛 请求日志批量插入,漏写了登录日志 ([#210](https://github.com/nsnail/NetAdmin/issues/210)) ([6c71c74](https://github.com/nsnail/NetAdmin/commit/6c71c74a27617c7d0530a5f6eaff650ecfd4eaec))
* 🐛 用户选择器报错 ([#220](https://github.com/nsnail/NetAdmin/issues/220)) ([71bfdaa](https://github.com/nsnail/NetAdmin/commit/71bfdaafa8176cf686b03244ee758de058080a71))
* 🐛 editUser ([ef2a0c3](https://github.com/nsnail/NetAdmin/commit/ef2a0c3280532ac24889279e4780a1b1a2561a6b))
* 🐛 idd ([#208](https://github.com/nsnail/NetAdmin/issues/208)) ([4e9f605](https://github.com/nsnail/NetAdmin/commit/4e9f605ea2cc6fe394068cfea5638e51920b9096))
* 🐛 version 条件重复指定 ([01058ba](https://github.com/nsnail/NetAdmin/commit/01058ba7288bcc645f66de2f78e1d659d55333cf))
* 🐛 version lock ([4eecc0b](https://github.com/nsnail/NetAdmin/commit/4eecc0b4ce09f620f83109949e4c2b67b7f8ba90))
### [2.2.1](https://github.com/nsnail/NetAdmin/compare/v2.1.0...v2.2.1) (2024-12-04)
### Features
* ✨ 菜单复制 ([#214](https://github.com/nsnail/NetAdmin/issues/214)) ([81d9b0b](https://github.com/nsnail/NetAdmin/commit/81d9b0b3bb280661ceffa61aa6e9d612fb7ec52c))
* ✨ 文档管理 ([#221](https://github.com/nsnail/NetAdmin/issues/221)) ([7ed3040](https://github.com/nsnail/NetAdmin/commit/7ed30406c9f721a12f0b756ec8884a1882242b93))
* ✨ select-filter badge icon ([#217](https://github.com/nsnail/NetAdmin/issues/217)) ([4d857f1](https://github.com/nsnail/NetAdmin/commit/4d857f1861b1256980e7cc59e2ab6a5f7d966da2))
### Bug Fixes
* 🐛 按钮文字提示 ([#227](https://github.com/nsnail/NetAdmin/issues/227)) ([c88c8d2](https://github.com/nsnail/NetAdmin/commit/c88c8d293d44f2707f3b5232e6a40a141af9981c))
* 🐛 导出界面报错 ([#213](https://github.com/nsnail/NetAdmin/issues/213)) ([ef2f0de](https://github.com/nsnail/NetAdmin/commit/ef2f0de095e314f34bec21c0a2ccdb51423a163b))
* 🐛 导出文件的responseType ([#205](https://github.com/nsnail/NetAdmin/issues/205)) ([841a419](https://github.com/nsnail/NetAdmin/commit/841a4195e77aa96e3c6c72626c1add3f71a310aa))
* 🐛 请求日志批量插入,漏写了登录日志 ([#210](https://github.com/nsnail/NetAdmin/issues/210)) ([6c71c74](https://github.com/nsnail/NetAdmin/commit/6c71c74a27617c7d0530a5f6eaff650ecfd4eaec))
* 🐛 用户选择器报错 ([#220](https://github.com/nsnail/NetAdmin/issues/220)) ([71bfdaa](https://github.com/nsnail/NetAdmin/commit/71bfdaafa8176cf686b03244ee758de058080a71))
* 🐛 editUser ([ef2a0c3](https://github.com/nsnail/NetAdmin/commit/ef2a0c3280532ac24889279e4780a1b1a2561a6b))
* 🐛 idd ([#208](https://github.com/nsnail/NetAdmin/issues/208)) ([4e9f605](https://github.com/nsnail/NetAdmin/commit/4e9f605ea2cc6fe394068cfea5638e51920b9096))
* 🐛 version 条件重复指定 ([01058ba](https://github.com/nsnail/NetAdmin/commit/01058ba7288bcc645f66de2f78e1d659d55333cf))
* 🐛 version lock ([4eecc0b](https://github.com/nsnail/NetAdmin/commit/4eecc0b4ce09f620f83109949e4c2b67b7f8ba90))
## [2.2.0](https://github.com/nsnail/NetAdmin/compare/v2.1.0...v2.2.0) (2024-11-27)
### Features
* ✨ 菜单复制 ([#214](https://github.com/nsnail/NetAdmin/issues/214)) ([81d9b0b](https://github.com/nsnail/NetAdmin/commit/81d9b0b3bb280661ceffa61aa6e9d612fb7ec52c))
* ✨ 文档管理 ([#221](https://github.com/nsnail/NetAdmin/issues/221)) ([7ed3040](https://github.com/nsnail/NetAdmin/commit/7ed30406c9f721a12f0b756ec8884a1882242b93))
* ✨ select-filter badge icon ([#217](https://github.com/nsnail/NetAdmin/issues/217)) ([4d857f1](https://github.com/nsnail/NetAdmin/commit/4d857f1861b1256980e7cc59e2ab6a5f7d966da2))
### Bug Fixes
* 🐛 导出界面报错 ([#213](https://github.com/nsnail/NetAdmin/issues/213)) ([ef2f0de](https://github.com/nsnail/NetAdmin/commit/ef2f0de095e314f34bec21c0a2ccdb51423a163b))
* 🐛 导出文件的responseType ([#205](https://github.com/nsnail/NetAdmin/issues/205)) ([841a419](https://github.com/nsnail/NetAdmin/commit/841a4195e77aa96e3c6c72626c1add3f71a310aa))
* 🐛 请求日志批量插入,漏写了登录日志 ([#210](https://github.com/nsnail/NetAdmin/issues/210)) ([6c71c74](https://github.com/nsnail/NetAdmin/commit/6c71c74a27617c7d0530a5f6eaff650ecfd4eaec))
* 🐛 用户选择器报错 ([#220](https://github.com/nsnail/NetAdmin/issues/220)) ([71bfdaa](https://github.com/nsnail/NetAdmin/commit/71bfdaafa8176cf686b03244ee758de058080a71))
* 🐛 idd ([#208](https://github.com/nsnail/NetAdmin/issues/208)) ([4e9f605](https://github.com/nsnail/NetAdmin/commit/4e9f605ea2cc6fe394068cfea5638e51920b9096))
## [2.1.0](https://github.com/nsnail/NetAdmin/compare/v2.0.0...v2.1.0) (2024-11-15)
### Features
* ✨ 首页仪表板自定义布局 ([#201](https://github.com/nsnail/NetAdmin/issues/201)) ([2f30028](https://github.com/nsnail/NetAdmin/commit/2f300285aa2afbfaea1fd9ffe299cc2badf98e0f))
* ✨ 用户选择器 ([#189](https://github.com/nsnail/NetAdmin/issues/189)) ([8479f69](https://github.com/nsnail/NetAdmin/commit/8479f69bdccac93a497e039dd01e18333ec2bbdc))
### Bug Fixes
* 🐛 --el-color-primary 变量有闪烁现象 ([#194](https://github.com/nsnail/NetAdmin/issues/194)) ([26e3698](https://github.com/nsnail/NetAdmin/commit/26e3698f57a2986f3b727fa38f293ca40c89f3ab))
* 🐛 404 ([#198](https://github.com/nsnail/NetAdmin/issues/198)) ([d8dbb28](https://github.com/nsnail/NetAdmin/commit/d8dbb28cfc8ad427062eb8d81be67cc25ded6fb6))
* 🐛 module name ([#193](https://github.com/nsnail/NetAdmin/issues/193)) ([3069b8f](https://github.com/nsnail/NetAdmin/commit/3069b8fbc451c4c257becf0523ab6ea6cc9af7e2))
## [2.0.0](https://github.com/nsnail/NetAdmin/compare/v1.6.0...v2.0.0) (2024-11-04)
### Features
* ✨ 查询过滤器保存 ([779d8e5](https://github.com/nsnail/NetAdmin/commit/779d8e511a84d2be91d74ea308c22b969d6963f3))
* ✨ 框架代码同步 ([#173](https://github.com/nsnail/NetAdmin/issues/173)) ([c088492](https://github.com/nsnail/NetAdmin/commit/c088492cfabada198ad563e43278ab7e869029bc))
* ✨ 框架代码同步 ([#178](https://github.com/nsnail/NetAdmin/issues/178)) ([58e4572](https://github.com/nsnail/NetAdmin/commit/58e4572723ba68700fb6414167cb27b03c864db1))
### Bug Fixes
* 🐛 public const int SECS_CACHE_LOGIN_BY_USER_ID = 3600 * 24 * 30; // 秒:缓存时间-通过用户编号登录的用户信息 ([#179](https://github.com/nsnail/NetAdmin/issues/179)) ([000e3d6](https://github.com/nsnail/NetAdmin/commit/000e3d68a85eaee7758b4160d1d0ffa52aa4aae0))
## [1.6.0](https://github.com/nsnail/NetAdmin/compare/v1.5.0...v1.6.0) (2024-08-12)
### Features
* ✨ 移除RedLocker更改为自实现 ([#169](https://github.com/nsnail/NetAdmin/issues/169)) ([cd8ed67](https://github.com/nsnail/NetAdmin/commit/cd8ed674e0615b33fc0e025b9412c2f16d252f0f))
### Bug Fixes
* 🐛 站内信角标颜色 ([#167](https://github.com/nsnail/NetAdmin/issues/167)) ([e00c30c](https://github.com/nsnail/NetAdmin/commit/e00c30c96123769d8a9e6f30cc9a2c3e8099e34c))
* 🐛 ip归属地查询接口地址更新 ([#168](https://github.com/nsnail/NetAdmin/issues/168)) ([4733ade](https://github.com/nsnail/NetAdmin/commit/4733adede5e8993f741e9b94541aafeb6a733859))
* 🐛 ip显示问题 ([#166](https://github.com/nsnail/NetAdmin/issues/166)) ([6b63250](https://github.com/nsnail/NetAdmin/commit/6b6325003924b1605b610f759b2131c15013ffa0))
* 🐛 trimSuffix ([#163](https://github.com/nsnail/NetAdmin/issues/163)) ([7c56c8d](https://github.com/nsnail/NetAdmin/commit/7c56c8d571d4f29fcb20f238893dbf61e5e538f0))
## [1.5.0](https://github.com/nsnail/NetAdmin/compare/v1.4.0...v1.5.0) (2024-07-26)
### Features
* ✨ 登录日志独立存储 ([#161](https://github.com/nsnail/NetAdmin/issues/161)) ([faaf5aa](https://github.com/nsnail/NetAdmin/commit/faaf5aa0fc5299633ca4f384d6287171bb241ff4))
* ✨ 框架代码同步 ([#158](https://github.com/nsnail/NetAdmin/issues/158)) ([1a28e8d](https://github.com/nsnail/NetAdmin/commit/1a28e8d5a62aeab7e4fda5049b4f733a16480b67))
* ✨ 请求日志增加TraceId ([#154](https://github.com/nsnail/NetAdmin/issues/154)) ([aaea283](https://github.com/nsnail/NetAdmin/commit/aaea28389a56566e055b6651cf48a89194a72cb7))
* ✨ cron表达式的自然语言表达 ([#156](https://github.com/nsnail/NetAdmin/issues/156)) ([6d4ccf3](https://github.com/nsnail/NetAdmin/commit/6d4ccf344595e128a445f1cb7596a7a1c28fd4cd))
* ✨ logoBar显示程序版本号 ([#153](https://github.com/nsnail/NetAdmin/issues/153)) ([be5b9a1](https://github.com/nsnail/NetAdmin/commit/be5b9a160d1f06cfdf36cea4e5eb95908523fed2))
### Bug Fixes
* 🐛 error CS0117: 'Numbers' does not contain a definition for 'SECS_CACHE_DIC_CATALOG_CODE' ([#155](https://github.com/nsnail/NetAdmin/issues/155)) ([1733802](https://github.com/nsnail/NetAdmin/commit/1733802e02b7e69e4c8646f259da5098b87888f7))
## [1.4.0](https://github.com/nsnail/NetAdmin/compare/v1.3.0...v1.4.0) (2024-07-03)
### Features
* ✨ 框架代码同步 ([#150](https://github.com/nsnail/NetAdmin/issues/150)) ([e1b0030](https://github.com/nsnail/NetAdmin/commit/e1b0030193556fa0564ea059657b4b43c98085c2))
## [1.3.0](https://github.com/nsnail/NetAdmin/compare/v1.2.0...v1.3.0) (2024-06-24)
### Features
* ✨ 补充多语种文件 ([#146](https://github.com/nsnail/NetAdmin/issues/146)) ([1442e0a](https://github.com/nsnail/NetAdmin/commit/1442e0a37cb2f27d8ba7b77bed91feaa5d7b1fdd))
* ✨ 更新实体增加sql过滤参数 ([#140](https://github.com/nsnail/NetAdmin/issues/140)) ([a3ab970](https://github.com/nsnail/NetAdmin/commit/a3ab97019dd1fc2267db987ade80fa6749e24e4d))
* ✨ 框架代码同步 ([#139](https://github.com/nsnail/NetAdmin/issues/139)) ([608a1de](https://github.com/nsnail/NetAdmin/commit/608a1ded5c0e9987161444efd48597a687c693e1))
* ✨ 框架代码同步 ([#144](https://github.com/nsnail/NetAdmin/issues/144)) ([ae2d1c4](https://github.com/nsnail/NetAdmin/commit/ae2d1c4932bf1229ea36d28d486beaee8de16d53))
* ✨ 框架代码同步 ([#148](https://github.com/nsnail/NetAdmin/issues/148)) ([8bc8aa9](https://github.com/nsnail/NetAdmin/commit/8bc8aa960cdd1ed5036927bd508fce4c218618c7))
* ✨ 前端版本更新器 ([#145](https://github.com/nsnail/NetAdmin/issues/145)) ([6100e9e](https://github.com/nsnail/NetAdmin/commit/6100e9e9c88005d6a2f3c2706ca750a6ad62d2c7))
### Bug Fixes
* 🐛 补充多语种文件 ([#147](https://github.com/nsnail/NetAdmin/issues/147)) ([d00f0d2](https://github.com/nsnail/NetAdmin/commit/d00f0d2d9cc2243908a8b6979b9c4a5811b2a57e))
* 🐛 操作日志不显示userName ([#141](https://github.com/nsnail/NetAdmin/issues/141)) ([705d027](https://github.com/nsnail/NetAdmin/commit/705d027da44af159d29db9c93e47b549317c793e))
## [1.2.0](https://github.com/nsnail/NetAdmin/compare/v1.1.1...v1.2.0) (2024-06-06)
### Features
* ✨ 计划作业-上次执行耗时 ([#133](https://github.com/nsnail/NetAdmin/issues/133)) ([57b71e1](https://github.com/nsnail/NetAdmin/commit/57b71e1354ab8b0be995b5f563dd8c3fb7965d5f))
* ✨ 框架代码同步 ([#129](https://github.com/nsnail/NetAdmin/issues/129)) ([b01b8b2](https://github.com/nsnail/NetAdmin/commit/b01b8b24ba574c08ba5605e103ff2ccf15e5830a))
* ✨ 框架代码同步 ([#130](https://github.com/nsnail/NetAdmin/issues/130)) ([5edcf63](https://github.com/nsnail/NetAdmin/commit/5edcf63e24f6b13f5515e01ee8cf120b1a814d40))
* ✨ 默认头像根据用户名绘制svg ([#132](https://github.com/nsnail/NetAdmin/issues/132)) ([127f6e9](https://github.com/nsnail/NetAdmin/commit/127f6e9f6c8c12974e5340e9697281250737bed3))
* ✨ 手动执行计划作业 ([#122](https://github.com/nsnail/NetAdmin/issues/122)) ([3b83361](https://github.com/nsnail/NetAdmin/commit/3b8336105a908ba6bc300bec6ac4f49747ea66e9))
* ✨ 增强作业执行记录页面 ([#135](https://github.com/nsnail/NetAdmin/issues/135)) ([7ae473d](https://github.com/nsnail/NetAdmin/commit/7ae473d492b9ba60cbb1c355894917d14f5ffa8f))
* ✨ naColId组件 ([#118](https://github.com/nsnail/NetAdmin/issues/118)) ([47e67dd](https://github.com/nsnail/NetAdmin/commit/47e67dd503dd0ba6818e8b798e41c62420363f58))
* **frontend:** ✨ 手机端分页控件显示总条数 ([#124](https://github.com/nsnail/NetAdmin/issues/124)) ([e0d15f8](https://github.com/nsnail/NetAdmin/commit/e0d15f8039a74a9826a0395983960ab620308899))
### Bug Fixes
* 🐛 字段顺序 ([#131](https://github.com/nsnail/NetAdmin/issues/131)) ([d1951db](https://github.com/nsnail/NetAdmin/commit/d1951dbcb5fa50a7ff308f6b6d554da5f791bcf2))
* 🐛 字段长度 ([#134](https://github.com/nsnail/NetAdmin/issues/134)) ([c20a6c3](https://github.com/nsnail/NetAdmin/commit/c20a6c369d7b6d6dcfd07b3f3eaeab0fa309e766))
* 🐛 take count ([c08ea62](https://github.com/nsnail/NetAdmin/commit/c08ea62064cc522d7cca9c90a5f15f23d833b6e3))
* **backend:** 🐛 更新计划作业在sqlite数据库环境报错 ([#120](https://github.com/nsnail/NetAdmin/issues/120)) ([3152a8d](https://github.com/nsnail/NetAdmin/commit/3152a8d3e8054524470883c336fb6e93903a8426))
### [1.1.1](https://github.com/nsnail/NetAdmin/compare/v1.1.0...v1.1.1) (2024-04-29)
## [1.1.0](https://github.com/nsnail/NetAdmin/compare/v1.0.0...v1.1.0) (2024-04-29)
### Features
* ✨ 版本更新日志组件 ([#96](https://github.com/nsnail/NetAdmin/issues/96)) ([a37acc4](https://github.com/nsnail/NetAdmin/commit/a37acc4b55c91d57d51c7fa079da8700530412a5))
* ✨ 计划作业 ([#87](https://github.com/nsnail/NetAdmin/issues/87)) ([8293ec0](https://github.com/nsnail/NetAdmin/commit/8293ec0297875ebc9ad75cce9465bd587929c0bf))
* ✨ 计划作业执行记录 ([#89](https://github.com/nsnail/NetAdmin/issues/89)) ([6f89015](https://github.com/nsnail/NetAdmin/commit/6f890151989ad733e35653933b7597eec478cc3b))
* ✨ 将数据库结构同步和种子数据初始化作为命令行开关 ([#78](https://github.com/nsnail/NetAdmin/issues/78)) ([05ed3d3](https://github.com/nsnail/NetAdmin/commit/05ed3d3746aa274a0f88f7afadfea12a3c8a80ff))
* ✨ 快捷启用/禁用用户 ([#91](https://github.com/nsnail/NetAdmin/issues/91)) ([6c2d167](https://github.com/nsnail/NetAdmin/commit/6c2d1676e45b9f1ecf3be3ae5a172db49b62a81d))
* ✨ 前端表格高级筛选 ([#100](https://github.com/nsnail/NetAdmin/issues/100)) ([3847d6f](https://github.com/nsnail/NetAdmin/commit/3847d6fdbbd27efb53921bcc8374157f0da47155))
* ✨ 日志管理独立出来、增加登录日志界面 ([#65](https://github.com/nsnail/NetAdmin/issues/65)) ([9134c4f](https://github.com/nsnail/NetAdmin/commit/9134c4fe01165a87ebc7e2cbd0a2abff3c9fb3ea))
* ✨ 首页仪表面板 ([#103](https://github.com/nsnail/NetAdmin/issues/103)) ([149e1af](https://github.com/nsnail/NetAdmin/commit/149e1afa533b142a3666a325ec84a091d53c1840))
* ✨ cron表达式选择器 ([#92](https://github.com/nsnail/NetAdmin/issues/92)) ([bde9fb1](https://github.com/nsnail/NetAdmin/commit/bde9fb1ea264bd0b786ac68d590691892d7ce067))
### Bug Fixes
* 🐛 'Numbers' does not contain a definition for 'CACHE_SECS_DEFAULT' ([#102](https://github.com/nsnail/NetAdmin/issues/102)) ([8f69c29](https://github.com/nsnail/NetAdmin/commit/8f69c2907be282b1b39f4a179badb11502aa2403))
* 🐛 低版本jetbrains.resharper.globaltools搞乱了代码 ([#97](https://github.com/nsnail/NetAdmin/issues/97)) ([c117ddf](https://github.com/nsnail/NetAdmin/commit/c117ddfe7a433215b3449cdd6b19318a1f3cbf37))
* 🐛 前端样式问题 ([#84](https://github.com/nsnail/NetAdmin/issues/84)) ([6615df3](https://github.com/nsnail/NetAdmin/commit/6615df339934f6d19880c9822b44d5305c2f2a75))
* 🐛 请求日志客户端IP显示不正确 ([#60](https://github.com/nsnail/NetAdmin/issues/60)) ([ec698ce](https://github.com/nsnail/NetAdmin/commit/ec698ce4db49861eaaeb8bf5080764939e6d7231))
* 🐛 时区问题 ([#107](https://github.com/nsnail/NetAdmin/issues/107)) ([59c85ce](https://github.com/nsnail/NetAdmin/commit/59c85cef217c121b36d52993b6b5a774fe22df9e))
* 🐛 小问题 ([#76](https://github.com/nsnail/NetAdmin/issues/76)) ([52ddf27](https://github.com/nsnail/NetAdmin/commit/52ddf273c856d8f7e363ce23e5886b9eedf4604f))
* 🐛 在弹窗界面中引用的列表组件点击重置搜索条件按钮时会关闭弹窗的bug ([#95](https://github.com/nsnail/NetAdmin/issues/95)) ([8fee14c](https://github.com/nsnail/NetAdmin/commit/8fee14cd6ebd86456956fc59bbb61c545faa1fdd))
* 🐛 tinymce editor css 加载路径错误 ([#93](https://github.com/nsnail/NetAdmin/issues/93)) ([5fe7387](https://github.com/nsnail/NetAdmin/commit/5fe73878a2a53dc5e7e2dcbcbf22f91ffb4376dd))
* 🐛 tinymce editor css 加载路径错误 ([#94](https://github.com/nsnail/NetAdmin/issues/94)) ([802251e](https://github.com/nsnail/NetAdmin/commit/802251e42347bfe4fa0bcb4867b615d7c03abf19))
## 1.0.0 (2023-11-17)
### Features
* ✨ 基础模块 ([d26e4c7](https://github.com/nsnail/NetAdmin/commit/d26e4c77cc7264829a410f8503e855531f6b9c19))

View File

@ -1,34 +1,37 @@
<!-- 注意此文件名大小写不可变更 --> <!-- 注意此文件名大小写不可变更 -->
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<DefineConstants>DBTYPE_SQLITE</DefineConstants>
<SolutionDir>$(MSBuildThisFileDirectory)</SolutionDir> <SolutionDir>$(MSBuildThisFileDirectory)</SolutionDir>
</PropertyGroup> </PropertyGroup>
<Import Project="$(SolutionDir)/minver.targets"/> <Import Project="$(SolutionDir)/build/minver.targets"/>
<PropertyGroup> <PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Authors>nsnail</Authors> <Authors>nsnail</Authors>
<BaseIntermediateOutputPath>$(SolutionDir)/dist/backend/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath> <BaseIntermediateOutputPath>$(SolutionDir)/dist/backend/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
<BaseOutputPath>$(SolutionDir)/dist/backend/$(MSBuildProjectName)/bin</BaseOutputPath> <BaseOutputPath>$(SolutionDir)/dist/backend/$(MSBuildProjectName)/bin</BaseOutputPath>
<Copyright>© 2006-2023 nsnail</Copyright> <Copyright>© 2006-2024 nsnail</Copyright>
<Description>一个基于.Net8/Vue3极致优雅的RBAC通用权限管理模板</Description> <Description>通用后台权限管理系统、快速开发框架基于C#13/.NET9、Vue3/Vite、ElementPlus等现代技术构建具有十分整洁、优雅的编码规范</Description>
<EnableBaseIntermediateOutputPathMismatchWarning>false</EnableBaseIntermediateOutputPathMismatchWarning> <EnableBaseIntermediateOutputPathMismatchWarning>false</EnableBaseIntermediateOutputPathMismatchWarning>
<GenerateDocumentationFile>true</GenerateDocumentationFile> <GenerateDocumentationFile>true</GenerateDocumentationFile>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<LangVersion>preview</LangVersion> <LangVersion>preview</LangVersion>
<MinVerDefaultPreReleaseIdentifiers>beta</MinVerDefaultPreReleaseIdentifiers> <MinVerDefaultPreReleaseIdentifiers>beta</MinVerDefaultPreReleaseIdentifiers>
<MinVerTagPrefix>v</MinVerTagPrefix>
<NoWarn>CA1707;IDE0005;IDE0008;IDE0010;IDE0028;IDE0055;IDE0072;IDE0160;IDE0300;IDE0305;RCS1141;RCS1142;RCS1181;S101;S1121;S1135;S125;S2094;S3604;S4663;S6561;SA1010;SYSLIB1045</NoWarn>
<Product>NetAdmin</Product> <Product>NetAdmin</Product>
<RepositoryType>git</RepositoryType> <RepositoryType>git</RepositoryType>
<RepositoryUrl>http://git.shequnpay.com/lingyun/NetAdmin.git</RepositoryUrl> <RepositoryUrl>https://github.com/nsnail/NetAdmin.git</RepositoryUrl>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<Title>$(AssemblyName)</Title> <Title>$(AssemblyName)</Title>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="MinVer" Version="5.0.0-beta.1"> <PackageReference Include="MinVer" Version="6.1.0-beta.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="../GlobalUsings.cs" Link="GlobalUsings.cs"/> <Compile Include="$(SolutionDir)/src/backend/GlobalUsings.cs" Link="GlobalUsings.cs"/>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,7 +1,7 @@
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base FROM mcr.microsoft.com/dotnet/aspnet:9.0.4 AS base
WORKDIR /app WORKDIR /app
EXPOSE 8080 EXPOSE 8080
RUN apt update RUN apt update
RUN apt install -y redis RUN apt install -y redis
COPY ./dist/backend/NetAdmin.BizServer.Host/bin/Release/net8.0/publish . COPY ./dist/backend/YourSolution.AdmServer.Host/bin/Release/net9.0/publish .
ENTRYPOINT redis-server --daemonize yes && dotnet NetAdmin.BizServer.Host.dll ENTRYPOINT redis-server --daemonize yes && dotnet YourSolution.AdmServer.Host.dll -is

View File

@ -1,188 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C84EB5A0-37AD-4B17-A51E-E36888C4441E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "backend", "backend", "{4DAF9366-855F-46BB-AE4C-660C92FA0697}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0CAC-4828-A807-34A693F73859}"
ProjectSection(SolutionItems) = preProject
.commitlintrc.js = .commitlintrc.js
.editorconfig = .editorconfig
.gitattributes = .gitattributes
.gitignore = .gitignore
.tgitconfig = .tgitconfig
1.git.pr.ps1 = 1.git.pr.ps1
build.cake = build.cake
clone.project.refs.ps1 = clone.project.refs.ps1
code.clean.csx = code.clean.csx
code.clean.ps1 = code.clean.ps1
code.cleanup.full.ps1 = code.cleanup.full.ps1
code.quality.props = code.quality.props
copy.pkg.xml.comment.files.targets = copy.pkg.xml.comment.files.targets
Directory.Build.props = Directory.Build.props
Dockerfile = Dockerfile
dot.clean.cmd = dot.clean.cmd
dotnet-tools.json = dotnet-tools.json
gen.cs.tt = gen.cs.tt
gen.id.linq = gen.id.linq
gen.ln.cmd = gen.ln.cmd
gen.resx.tt = gen.resx.tt
git.rc.ps1 = git.rc.ps1
global.json = global.json
image.optimize.csx = image.optimize.csx
install.as.tpl.ps1 = install.as.tpl.ps1
LICENSE = LICENSE
minver.targets = minver.targets
NetAdmin.sln.DotSettings = NetAdmin.sln.DotSettings
nuget.config = nuget.config
package.json = package.json
prebuild.targets = prebuild.targets
README.md = README.md
rename.csx = rename.csx
stylecop.analyzers.ruleset = stylecop.analyzers.ruleset
StyleCop.json = StyleCop.json
switcher.freesql.json = switcher.freesql.json
switcher.furion.json = switcher.furion.json
switcher.nsext.json = switcher.nsext.json
switcher.ps1 = switcher.ps1
sync.sln.files.csx = sync.sln.files.csx
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Infrastructure", "src\backend\NetAdmin.Infrastructure\NetAdmin.Infrastructure.csproj", "{1E62C322-EE42-4699-A6F1-791C53EFA62D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.BizServer.Application", "src\backend\NetAdmin.BizServer.Application\NetAdmin.BizServer.Application.csproj", "{E38B2EB4-D7A5-4777-9236-3B348919DF23}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.BizServer.Host", "src\backend\NetAdmin.BizServer.Host\NetAdmin.BizServer.Host.csproj", "{CE895E44-EEC3-4ECE-A56A-8A82E7D863E3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03.HostedServers", "03.HostedServers", "{12AE5B4B-CB1A-498E-83B8-04E201E31D86}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Domain", "src\backend\NetAdmin.Domain\NetAdmin.Domain.csproj", "{58509C57-09FA-4E3C-BC07-78E786A2A326}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Application", "src\backend\NetAdmin.Application\NetAdmin.Application.csproj", "{70C54E1B-2083-4196-AB68-34CAF0075D82}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Host", "src\backend\NetAdmin.Host\NetAdmin.Host.csproj", "{91839A15-D08F-4848-A301-F793412BC688}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Cache", "src\backend\NetAdmin.Cache\NetAdmin.Cache.csproj", "{91452C22-4B57-4F16-9AF6-42C7BF830504}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.BizServer.Cache", "src\backend\NetAdmin.BizServer.Cache\NetAdmin.BizServer.Cache.csproj", "{7CB632D3-3635-4F8D-AFE7-F496D37D422B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.SysComponent.Host", "src\backend\NetAdmin.SysComponent.Host\NetAdmin.SysComponent.Host.csproj", "{C2CC1596-3BEE-43EA-A9BE-4EDE5716296C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.SysComponent.Cache", "src\backend\NetAdmin.SysComponent.Cache\NetAdmin.SysComponent.Cache.csproj", "{19872A4C-3C9A-4C62-A33B-74F5B8D6F77C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.SysComponent.Application", "src\backend\NetAdmin.SysComponent.Application\NetAdmin.SysComponent.Application.csproj", "{34650E82-D257-46DA-BD6B-DE307113347B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "02.Components", "02.Components", "{3F23258D-8299-4992-9F51-2EE9B52CF9D2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04.BackgroundServices", "04.BackgroundServices", "{CBFBF29B-27E8-4DB1-ADD6-4B750897ACD3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "01.Frameworks", "01.Frameworks", "{D9C3EF66-2757-473D-A26B-54FD08DA203F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.ScheduledService", "src\backend\NetAdmin.ScheduledService\NetAdmin.ScheduledService.csproj", "{96668960-310F-4682-B3F9-1E8F1EED8C90}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "06.Tests", "06.Tests", "{89260294-80FC-49F1-8D73-AECD39AFF2B7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.BizServer.Tests", "src\backend\NetAdmin.BizServer.Tests\NetAdmin.BizServer.Tests.csproj", "{C7F27698-DA05-4ACD-B0D7-4791B3972002}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{1129FE25-466B-4F4F-85FC-3752664245E1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{3C6F049E-3EE8-4D66-9AFF-E8A369032487}"
ProjectSection(SolutionItems) = preProject
ci.yml = .github/workflows/ci.yml
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Tests", "src\backend\NetAdmin.Tests\NetAdmin.Tests.csproj", "{00604162-C444-478B-B773-3AB23C856CA7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1E62C322-EE42-4699-A6F1-791C53EFA62D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1E62C322-EE42-4699-A6F1-791C53EFA62D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1E62C322-EE42-4699-A6F1-791C53EFA62D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E62C322-EE42-4699-A6F1-791C53EFA62D}.Release|Any CPU.Build.0 = Release|Any CPU
{E38B2EB4-D7A5-4777-9236-3B348919DF23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E38B2EB4-D7A5-4777-9236-3B348919DF23}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E38B2EB4-D7A5-4777-9236-3B348919DF23}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E38B2EB4-D7A5-4777-9236-3B348919DF23}.Release|Any CPU.Build.0 = Release|Any CPU
{CE895E44-EEC3-4ECE-A56A-8A82E7D863E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE895E44-EEC3-4ECE-A56A-8A82E7D863E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE895E44-EEC3-4ECE-A56A-8A82E7D863E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE895E44-EEC3-4ECE-A56A-8A82E7D863E3}.Release|Any CPU.Build.0 = Release|Any CPU
{58509C57-09FA-4E3C-BC07-78E786A2A326}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58509C57-09FA-4E3C-BC07-78E786A2A326}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58509C57-09FA-4E3C-BC07-78E786A2A326}.Release|Any CPU.ActiveCfg = Release|Any CPU
{58509C57-09FA-4E3C-BC07-78E786A2A326}.Release|Any CPU.Build.0 = Release|Any CPU
{70C54E1B-2083-4196-AB68-34CAF0075D82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{70C54E1B-2083-4196-AB68-34CAF0075D82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{70C54E1B-2083-4196-AB68-34CAF0075D82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{70C54E1B-2083-4196-AB68-34CAF0075D82}.Release|Any CPU.Build.0 = Release|Any CPU
{91839A15-D08F-4848-A301-F793412BC688}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{91839A15-D08F-4848-A301-F793412BC688}.Debug|Any CPU.Build.0 = Debug|Any CPU
{91839A15-D08F-4848-A301-F793412BC688}.Release|Any CPU.ActiveCfg = Release|Any CPU
{91839A15-D08F-4848-A301-F793412BC688}.Release|Any CPU.Build.0 = Release|Any CPU
{91452C22-4B57-4F16-9AF6-42C7BF830504}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{91452C22-4B57-4F16-9AF6-42C7BF830504}.Debug|Any CPU.Build.0 = Debug|Any CPU
{91452C22-4B57-4F16-9AF6-42C7BF830504}.Release|Any CPU.ActiveCfg = Release|Any CPU
{91452C22-4B57-4F16-9AF6-42C7BF830504}.Release|Any CPU.Build.0 = Release|Any CPU
{7CB632D3-3635-4F8D-AFE7-F496D37D422B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7CB632D3-3635-4F8D-AFE7-F496D37D422B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7CB632D3-3635-4F8D-AFE7-F496D37D422B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7CB632D3-3635-4F8D-AFE7-F496D37D422B}.Release|Any CPU.Build.0 = Release|Any CPU
{C2CC1596-3BEE-43EA-A9BE-4EDE5716296C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2CC1596-3BEE-43EA-A9BE-4EDE5716296C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2CC1596-3BEE-43EA-A9BE-4EDE5716296C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C2CC1596-3BEE-43EA-A9BE-4EDE5716296C}.Release|Any CPU.Build.0 = Release|Any CPU
{19872A4C-3C9A-4C62-A33B-74F5B8D6F77C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{19872A4C-3C9A-4C62-A33B-74F5B8D6F77C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{19872A4C-3C9A-4C62-A33B-74F5B8D6F77C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{19872A4C-3C9A-4C62-A33B-74F5B8D6F77C}.Release|Any CPU.Build.0 = Release|Any CPU
{34650E82-D257-46DA-BD6B-DE307113347B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34650E82-D257-46DA-BD6B-DE307113347B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34650E82-D257-46DA-BD6B-DE307113347B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34650E82-D257-46DA-BD6B-DE307113347B}.Release|Any CPU.Build.0 = Release|Any CPU
{96668960-310F-4682-B3F9-1E8F1EED8C90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96668960-310F-4682-B3F9-1E8F1EED8C90}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96668960-310F-4682-B3F9-1E8F1EED8C90}.Release|Any CPU.ActiveCfg = Release|Any CPU
{96668960-310F-4682-B3F9-1E8F1EED8C90}.Release|Any CPU.Build.0 = Release|Any CPU
{C7F27698-DA05-4ACD-B0D7-4791B3972002}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C7F27698-DA05-4ACD-B0D7-4791B3972002}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C7F27698-DA05-4ACD-B0D7-4791B3972002}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C7F27698-DA05-4ACD-B0D7-4791B3972002}.Release|Any CPU.Build.0 = Release|Any CPU
{00604162-C444-478B-B773-3AB23C856CA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00604162-C444-478B-B773-3AB23C856CA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00604162-C444-478B-B773-3AB23C856CA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00604162-C444-478B-B773-3AB23C856CA7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{4DAF9366-855F-46BB-AE4C-660C92FA0697} = {C84EB5A0-37AD-4B17-A51E-E36888C4441E}
{12AE5B4B-CB1A-498E-83B8-04E201E31D86} = {4DAF9366-855F-46BB-AE4C-660C92FA0697}
{3F23258D-8299-4992-9F51-2EE9B52CF9D2} = {4DAF9366-855F-46BB-AE4C-660C92FA0697}
{CBFBF29B-27E8-4DB1-ADD6-4B750897ACD3} = {4DAF9366-855F-46BB-AE4C-660C92FA0697}
{D9C3EF66-2757-473D-A26B-54FD08DA203F} = {4DAF9366-855F-46BB-AE4C-660C92FA0697}
{70C54E1B-2083-4196-AB68-34CAF0075D82} = {D9C3EF66-2757-473D-A26B-54FD08DA203F}
{91452C22-4B57-4F16-9AF6-42C7BF830504} = {D9C3EF66-2757-473D-A26B-54FD08DA203F}
{58509C57-09FA-4E3C-BC07-78E786A2A326} = {D9C3EF66-2757-473D-A26B-54FD08DA203F}
{91839A15-D08F-4848-A301-F793412BC688} = {D9C3EF66-2757-473D-A26B-54FD08DA203F}
{1E62C322-EE42-4699-A6F1-791C53EFA62D} = {D9C3EF66-2757-473D-A26B-54FD08DA203F}
{96668960-310F-4682-B3F9-1E8F1EED8C90} = {CBFBF29B-27E8-4DB1-ADD6-4B750897ACD3}
{E38B2EB4-D7A5-4777-9236-3B348919DF23} = {12AE5B4B-CB1A-498E-83B8-04E201E31D86}
{7CB632D3-3635-4F8D-AFE7-F496D37D422B} = {12AE5B4B-CB1A-498E-83B8-04E201E31D86}
{CE895E44-EEC3-4ECE-A56A-8A82E7D863E3} = {12AE5B4B-CB1A-498E-83B8-04E201E31D86}
{89260294-80FC-49F1-8D73-AECD39AFF2B7} = {4DAF9366-855F-46BB-AE4C-660C92FA0697}
{C7F27698-DA05-4ACD-B0D7-4791B3972002} = {89260294-80FC-49F1-8D73-AECD39AFF2B7}
{3C6F049E-3EE8-4D66-9AFF-E8A369032487} = {1129FE25-466B-4F4F-85FC-3752664245E1}
{00604162-C444-478B-B773-3AB23C856CA7} = {D9C3EF66-2757-473D-A26B-54FD08DA203F}
{34650E82-D257-46DA-BD6B-DE307113347B} = {3F23258D-8299-4992-9F51-2EE9B52CF9D2}
{19872A4C-3C9A-4C62-A33B-74F5B8D6F77C} = {3F23258D-8299-4992-9F51-2EE9B52CF9D2}
{C2CC1596-3BEE-43EA-A9BE-4EDE5716296C} = {3F23258D-8299-4992-9F51-2EE9B52CF9D2}
EndGlobalSection
EndGlobal

View File

@ -1,105 +0,0 @@
<wpf:ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xml:space="preserve">
<s:String x:Key="/Default/CodeEditing/GenerateMemberBody/DocumentationGenerationKind/@EntryValue">Inherit</s:String>
<s:Boolean x:Key="/Default/CodeEditing/TypingAssist/SkipClosingBracesOnTabInStringLiterals/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=AssignmentInConditionalExpression/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedAutoPropertyAccessor_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedAutoPropertyAccessor_002ELocal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSOR_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSORHOLDER_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_RECORD_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ID/@EntryIndexedValue">ID</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IOS/@EntryIndexedValue">IOS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IP/@EntryIndexedValue">IP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=TypesAndNamespaces/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb_AaBb" /&gt;</s:String>
<s:String x:Key="/Default/CustomTools/CustomToolsData/@EntryValue"></s:String>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/ReSpeller/ReSpellerEnabled/@EntryValue">True</s:Boolean>
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_CODE/@EntryValue">1</s:Int64>
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue">1</s:Int64>
<s:String x:Key="/Default/CodeInspection/Highlighting/AnalysisEnabled/@EntryValue">OFF</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=TooWideLocalVariableScope/@EntryIndexedValue">HINT</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOR/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOREACH/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_IFELSE/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_WHILE/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=Constants/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateConstants/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="_" Suffix="" Style="AA_BB" /&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticReadonly/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=StaticReadonly/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/CSharpFileLayoutPatterns/Pattern/@EntryValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns"&gt;
&lt;TypePattern&gt;
&lt;Entry&gt;
&lt;Entry.SortBy&gt;
&lt;Kind&gt;
&lt;Kind.Order&gt;
&lt;DeclarationKind&gt;Constant&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Field&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Constructor&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Destructor&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Delegate&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Event&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Enum&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Interface&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Property&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Indexer&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Method&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Struct&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Record&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Class&lt;/DeclarationKind&gt;
&lt;/Kind.Order&gt;
&lt;/Kind&gt;
&lt;Access&gt;
&lt;Access.Order&gt;
&lt;AccessModifier&gt;Public&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;Internal&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;ProtectedInternal&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;Protected&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;PrivateProtected&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;Private&lt;/AccessModifier&gt;
&lt;/Access.Order&gt;
&lt;/Access&gt;
&lt;Static /&gt;
&lt;Readonly /&gt;
&lt;Name /&gt;
&lt;/Entry.SortBy&gt;
&lt;/Entry&gt;
&lt;/TypePattern&gt;
&lt;/Patterns&gt;</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Aigc/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Biji/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Childs/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Depts/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=fenlei/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=FFFFFF/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Furion/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Haojia/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=hongbao/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=inte/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=logourl/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Meituan/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=miaosha/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=nicktitle/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=qudao/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Responsing/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Smzdm/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Tabao/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=tablename/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Taobao/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Taoke/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Tese/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=timesort/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=weixin/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=XBOXONE/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=youhui/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=yugao/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=YYYYMMDD/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=YYYYMMDDHHMMSSFFFZZZZ/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=zhiyou/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=zhuanlan/@EntryIndexedValue">True</s:Boolean>
</wpf:ResourceDictionary>

93
NetAdmin.slnx Normal file
View File

@ -0,0 +1,93 @@
<Solution>
<Folder Name="/.drone/"/>
<Folder Name="/.drone/workflows/">
<File Path=".drone/workflows/README.md"/>
</Folder>
<Folder Name="/.github/"/>
<Folder Name="/.github/workflows/">
<File Path=".github/workflows/nightly-build.yml"/>
<File Path=".github/workflows/README.md"/>
<File Path=".github/workflows/release.yml"/>
</Folder>
<Folder Name="/build/">
<File Path="build/code.quality.props"/>
<File Path="build/copy.pkg.xml.comment.files.targets"/>
<File Path="build/minver.targets"/>
<File Path="build/prebuild.targets"/>
<File Path="build/stylecop.analyzers.ruleset"/>
</Folder>
<Folder Name="/docker/">
<File Path="docker/README.md"/>
</Folder>
<Folder Name="/meta/">
<File Path=".commitlintrc.js"/>
<File Path=".editorconfig"/>
<File Path=".gitattributes"/>
<File Path=".gitignore"/>
<File Path=".gitmodules"/>
<File Path="CHANGELOG.md"/>
<File Path="Directory.Build.props"/>
<File Path="Dockerfile"/>
<File Path="dotnet-tools.json"/>
<File Path="global.json"/>
<File Path="LICENSE"/>
<File Path="NetAdmin.slnx.DotSettings"/>
<File Path="nuget.config"/>
<File Path="package.json"/>
<File Path="README.md"/>
</Folder>
<Folder Name="/scripts/">
<File Path="scripts/1.git.pull.request.ps1"/>
<File Path="scripts/2.git.release.ps1"/>
<File Path="scripts/3.git.recreate.branch.ps1"/>
<File Path="scripts/4.git.del.obsolete.tags.ps1"/>
<File Path="scripts/5.git.update.submodule.ps1"/>
<File Path="scripts/clean.ln.csx"/>
<File Path="scripts/code.clean.csx"/>
<File Path="scripts/code.clean.ps1"/>
<File Path="scripts/find.unused.ln.csx"/>
<File Path="scripts/gen.cs.tt"/>
<File Path="scripts/gen.id.linq"/>
<File Path="scripts/gen.ln.cmd"/>
<File Path="scripts/gen.resx.tt"/>
<File Path="scripts/git.config.cmd"/>
<File Path="scripts/image.optimize.csx"/>
<File Path="scripts/install.as.tpl.ps1"/>
<File Path="scripts/rename.csx"/>
<File Path="scripts/resharper.full.ps1"/>
<File Path="scripts/switch.nuget.or.project.csx"/>
<File Path="scripts/sync.slnx.files.csx"/>
<File Path="scripts/wait.server.stop.sh"/>
</Folder>
<Folder Name="/src/"/>
<Folder Name="/src/backend/"/>
<Folder Name="/src/backend/01.frameworks/">
<!--<Project Type="Refs" Path="refs/Gurion/src/Gurion/Gurion.csproj"/>-->
<!--<Project Type="Refs" Path="refs/NetAdmin.FreeSql/src/FreeSql.DbContext/FreeSql.DbContext.csproj"/>-->
<!--<Project Type="Refs" Path="refs/NetAdmin.FreeSql/src/FreeSql.Provider.Sqlite/FreeSql.Provider.Sqlite.csproj"/>-->
<!--<Project Type="Refs" Path="refs/NetAdmin.FreeSql/src/FreeSql/FreeSql.csproj"/>-->
<Project Path="src/backend/NetAdmin/NetAdmin.Application/NetAdmin.Application.csproj"/>
<Project Path="src/backend/NetAdmin/NetAdmin.Cache/NetAdmin.Cache.csproj"/>
<Project Path="src/backend/NetAdmin/NetAdmin.Domain/NetAdmin.Domain.csproj"/>
<Project Path="src/backend/NetAdmin/NetAdmin.Host/NetAdmin.Host.csproj"/>
<Project Path="src/backend/NetAdmin/NetAdmin.Infrastructure/NetAdmin.Infrastructure.csproj"/>
<Project Path="src/backend/NetAdmin/NetAdmin.Tests/NetAdmin.Tests.csproj"/>
</Folder>
<Folder Name="/src/backend/02.components/">
<Project Path="src/backend/NetAdmin/NetAdmin.SysComponent.Application/NetAdmin.SysComponent.Application.csproj"/>
<Project Path="src/backend/NetAdmin/NetAdmin.SysComponent.Cache/NetAdmin.SysComponent.Cache.csproj"/>
<Project Path="src/backend/NetAdmin/NetAdmin.SysComponent.Host/NetAdmin.SysComponent.Host.csproj"/>
</Folder>
<Folder Name="/src/backend/03.hosted-servers/">
<Project Path="src/backend/YourSolution.AdmServer.Application/YourSolution.AdmServer.Application.csproj"/>
<Project Path="src/backend/YourSolution.AdmServer.Cache/YourSolution.AdmServer.Cache.csproj"/>
<Project Path="src/backend/YourSolution.AdmServer.Domain/YourSolution.AdmServer.Domain.csproj"/>
<Project Path="src/backend/YourSolution.AdmServer.Host/YourSolution.AdmServer.Host.csproj"/>
<Project Path="src/backend/YourSolution.AdmServer.Infrastructure/YourSolution.AdmServer.Infrastructure.csproj"/>
</Folder>
<Folder Name="/src/backend/04.tests/">
<Project Path="src/backend/UnitTests/UnitTests.csproj"/>
</Folder>
<Folder Name="/src/backend/05.tools/">
</Folder>
</Solution>

346
NetAdmin.slnx.DotSettings Normal file
View File

@ -0,0 +1,346 @@
<wpf:ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xml:space="preserve">
<!-- CodeEditing-->
<s:Boolean x:Key="/Default/CodeEditing/TypingAssist/SkipClosingBracesOnTabInStringLiterals/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeEditing/GenerateMemberBody/DocumentationGenerationKind/@EntryValue">Inherit</s:String>
<!-- CodeInspection-->
<s:Boolean x:Key="/Default/CodeInspection/ExcludedFiles/FileMasksToSkip/=_002A_002Ett/@EntryIndexedValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/Highlighting/AnalysisEnabled/@EntryValue">OFF</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=AssignmentInConditionalExpression/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ClassNeverInstantiated_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=DuplicateResource/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantPatternParentheses/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=SuggestBaseTypeForParameter/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=SuggestBaseTypeForParameterInConstructor/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=SwitchExpressionHandlesSomeKnownEnumValuesWithExceptionInDefault/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=TooWideLocalVariableScope/@EntryIndexedValue">HINT</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedAutoPropertyAccessor_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedAutoPropertyAccessor_002ELocal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<!-- CodeStyle-->
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_CODE/@EntryValue">1</s:Int64>
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue">1</s:Int64>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOR/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOREACH/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_IFELSE/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_WHILE/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSORHOLDER_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSOR_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_RECORD_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AD/@EntryIndexedValue">AD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AE/@EntryIndexedValue">AE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AF/@EntryIndexedValue">AF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AG/@EntryIndexedValue">AG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AI/@EntryIndexedValue">AI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AL/@EntryIndexedValue">AL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AM/@EntryIndexedValue">AM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AO/@EntryIndexedValue">AO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AQ/@EntryIndexedValue">AQ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AR/@EntryIndexedValue">AR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AS/@EntryIndexedValue">AS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AT/@EntryIndexedValue">AT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AU/@EntryIndexedValue">AU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AW/@EntryIndexedValue">AW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AX/@EntryIndexedValue">AX</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AZ/@EntryIndexedValue">AZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BA/@EntryIndexedValue">BA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BB/@EntryIndexedValue">BB</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BD/@EntryIndexedValue">BD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BE/@EntryIndexedValue">BE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BF/@EntryIndexedValue">BF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BG/@EntryIndexedValue">BG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BH/@EntryIndexedValue">BH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BI/@EntryIndexedValue">BI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BJ/@EntryIndexedValue">BJ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BL/@EntryIndexedValue">BL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BM/@EntryIndexedValue">BM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BN/@EntryIndexedValue">BN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BO/@EntryIndexedValue">BO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BQ/@EntryIndexedValue">BQ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BR/@EntryIndexedValue">BR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BS/@EntryIndexedValue">BS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BT/@EntryIndexedValue">BT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BV/@EntryIndexedValue">BV</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BW/@EntryIndexedValue">BW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BY/@EntryIndexedValue">BY</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BZ/@EntryIndexedValue">BZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CA/@EntryIndexedValue">CA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CC/@EntryIndexedValue">CC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CD/@EntryIndexedValue">CD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CF/@EntryIndexedValue">CF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CG/@EntryIndexedValue">CG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CH/@EntryIndexedValue">CH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CI/@EntryIndexedValue">CI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CK/@EntryIndexedValue">CK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CL/@EntryIndexedValue">CL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CM/@EntryIndexedValue">CM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CN/@EntryIndexedValue">CN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CO/@EntryIndexedValue">CO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CR/@EntryIndexedValue">CR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CU/@EntryIndexedValue">CU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CV/@EntryIndexedValue">CV</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CW/@EntryIndexedValue">CW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CX/@EntryIndexedValue">CX</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CY/@EntryIndexedValue">CY</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CZ/@EntryIndexedValue">CZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DE/@EntryIndexedValue">DE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DJ/@EntryIndexedValue">DJ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DK/@EntryIndexedValue">DK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DM/@EntryIndexedValue">DM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DO/@EntryIndexedValue">DO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DZ/@EntryIndexedValue">DZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EC/@EntryIndexedValue">EC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EE/@EntryIndexedValue">EE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EG/@EntryIndexedValue">EG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EH/@EntryIndexedValue">EH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ER/@EntryIndexedValue">ER</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ES/@EntryIndexedValue">ES</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ET/@EntryIndexedValue">ET</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FI/@EntryIndexedValue">FI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FJ/@EntryIndexedValue">FJ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FK/@EntryIndexedValue">FK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FM/@EntryIndexedValue">FM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FO/@EntryIndexedValue">FO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FR/@EntryIndexedValue">FR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GA/@EntryIndexedValue">GA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GB/@EntryIndexedValue">GB</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GD/@EntryIndexedValue">GD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GE/@EntryIndexedValue">GE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GF/@EntryIndexedValue">GF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GG/@EntryIndexedValue">GG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GH/@EntryIndexedValue">GH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GI/@EntryIndexedValue">GI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GL/@EntryIndexedValue">GL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GM/@EntryIndexedValue">GM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GN/@EntryIndexedValue">GN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GP/@EntryIndexedValue">GP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GQ/@EntryIndexedValue">GQ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GR/@EntryIndexedValue">GR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GS/@EntryIndexedValue">GS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GT/@EntryIndexedValue">GT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GU/@EntryIndexedValue">GU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GW/@EntryIndexedValue">GW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GY/@EntryIndexedValue">GY</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HK/@EntryIndexedValue">HK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HM/@EntryIndexedValue">HM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HN/@EntryIndexedValue">HN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HR/@EntryIndexedValue">HR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HT/@EntryIndexedValue">HT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HU/@EntryIndexedValue">HU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ID/@EntryIndexedValue">ID</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IE/@EntryIndexedValue">IE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IL/@EntryIndexedValue">IL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IM/@EntryIndexedValue">IM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IN/@EntryIndexedValue">IN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IO/@EntryIndexedValue">IO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IQ/@EntryIndexedValue">IQ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IR/@EntryIndexedValue">IR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IS/@EntryIndexedValue">IS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IT/@EntryIndexedValue">IT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=JE/@EntryIndexedValue">JE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=JM/@EntryIndexedValue">JM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=JO/@EntryIndexedValue">JO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=JP/@EntryIndexedValue">JP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KE/@EntryIndexedValue">KE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KG/@EntryIndexedValue">KG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KH/@EntryIndexedValue">KH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KI/@EntryIndexedValue">KI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KM/@EntryIndexedValue">KM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KN/@EntryIndexedValue">KN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KP/@EntryIndexedValue">KP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KR/@EntryIndexedValue">KR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KW/@EntryIndexedValue">KW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KY/@EntryIndexedValue">KY</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KZ/@EntryIndexedValue">KZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LA/@EntryIndexedValue">LA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LB/@EntryIndexedValue">LB</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LC/@EntryIndexedValue">LC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LI/@EntryIndexedValue">LI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LK/@EntryIndexedValue">LK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LR/@EntryIndexedValue">LR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LS/@EntryIndexedValue">LS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LT/@EntryIndexedValue">LT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LU/@EntryIndexedValue">LU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LV/@EntryIndexedValue">LV</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LY/@EntryIndexedValue">LY</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MA/@EntryIndexedValue">MA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MC/@EntryIndexedValue">MC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MD/@EntryIndexedValue">MD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ME/@EntryIndexedValue">ME</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MF/@EntryIndexedValue">MF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MG/@EntryIndexedValue">MG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MH/@EntryIndexedValue">MH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MK/@EntryIndexedValue">MK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ML/@EntryIndexedValue">ML</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MM/@EntryIndexedValue">MM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MN/@EntryIndexedValue">MN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MO/@EntryIndexedValue">MO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MP/@EntryIndexedValue">MP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MQ/@EntryIndexedValue">MQ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MR/@EntryIndexedValue">MR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MS/@EntryIndexedValue">MS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MT/@EntryIndexedValue">MT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MU/@EntryIndexedValue">MU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MV/@EntryIndexedValue">MV</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MW/@EntryIndexedValue">MW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MX/@EntryIndexedValue">MX</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MY/@EntryIndexedValue">MY</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MZ/@EntryIndexedValue">MZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NA/@EntryIndexedValue">NA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NC/@EntryIndexedValue">NC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NE/@EntryIndexedValue">NE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NF/@EntryIndexedValue">NF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NG/@EntryIndexedValue">NG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NI/@EntryIndexedValue">NI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NL/@EntryIndexedValue">NL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NO/@EntryIndexedValue">NO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NP/@EntryIndexedValue">NP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NR/@EntryIndexedValue">NR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NU/@EntryIndexedValue">NU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NZ/@EntryIndexedValue">NZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OM/@EntryIndexedValue">OM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OTP/@EntryIndexedValue">OTP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PA/@EntryIndexedValue">PA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PE/@EntryIndexedValue">PE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PF/@EntryIndexedValue">PF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PG/@EntryIndexedValue">PG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PH/@EntryIndexedValue">PH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PK/@EntryIndexedValue">PK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PL/@EntryIndexedValue">PL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PM/@EntryIndexedValue">PM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PN/@EntryIndexedValue">PN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PR/@EntryIndexedValue">PR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PS/@EntryIndexedValue">PS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PT/@EntryIndexedValue">PT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PW/@EntryIndexedValue">PW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PY/@EntryIndexedValue">PY</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=QA/@EntryIndexedValue">QA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RE/@EntryIndexedValue">RE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RO/@EntryIndexedValue">RO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RS/@EntryIndexedValue">RS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RU/@EntryIndexedValue">RU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RW/@EntryIndexedValue">RW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SA/@EntryIndexedValue">SA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SB/@EntryIndexedValue">SB</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SC/@EntryIndexedValue">SC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SD/@EntryIndexedValue">SD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SE/@EntryIndexedValue">SE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SG/@EntryIndexedValue">SG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SH/@EntryIndexedValue">SH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SI/@EntryIndexedValue">SI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SJ/@EntryIndexedValue">SJ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SK/@EntryIndexedValue">SK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SL/@EntryIndexedValue">SL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SM/@EntryIndexedValue">SM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SN/@EntryIndexedValue">SN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SO/@EntryIndexedValue">SO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SR/@EntryIndexedValue">SR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SS/@EntryIndexedValue">SS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ST/@EntryIndexedValue">ST</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SV/@EntryIndexedValue">SV</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SX/@EntryIndexedValue">SX</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SY/@EntryIndexedValue">SY</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SZ/@EntryIndexedValue">SZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TC/@EntryIndexedValue">TC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TD/@EntryIndexedValue">TD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TF/@EntryIndexedValue">TF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TG/@EntryIndexedValue">TG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TH/@EntryIndexedValue">TH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TJ/@EntryIndexedValue">TJ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TK/@EntryIndexedValue">TK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TL/@EntryIndexedValue">TL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TM/@EntryIndexedValue">TM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TN/@EntryIndexedValue">TN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TO/@EntryIndexedValue">TO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TR/@EntryIndexedValue">TR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TT/@EntryIndexedValue">TT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TV/@EntryIndexedValue">TV</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TW/@EntryIndexedValue">TW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TZ/@EntryIndexedValue">TZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UA/@EntryIndexedValue">UA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UG/@EntryIndexedValue">UG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UM/@EntryIndexedValue">UM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=US/@EntryIndexedValue">US</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UY/@EntryIndexedValue">UY</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UZ/@EntryIndexedValue">UZ</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VA/@EntryIndexedValue">VA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VC/@EntryIndexedValue">VC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VE/@EntryIndexedValue">VE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VG/@EntryIndexedValue">VG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VI/@EntryIndexedValue">VI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VN/@EntryIndexedValue">VN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VU/@EntryIndexedValue">VU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=WF/@EntryIndexedValue">WF</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=WS/@EntryIndexedValue">WS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=YE/@EntryIndexedValue">YE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=YT/@EntryIndexedValue">YT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ZA/@EntryIndexedValue">ZA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ZM/@EntryIndexedValue">ZM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ZW/@EntryIndexedValue">ZW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=15b5b1f1_002D457c_002D4ca6_002Db278_002D5615aedc07d3/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static readonly fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=236f7aa5_002D7b06_002D43ca_002Dbf2a_002D9b31bfcff09a/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Any" AccessRightKinds="Private" Description="Constant fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="CONSTANT_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="_" Suffix="" Style="AA_BB" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=669e5282_002Dfb4b_002D4e90_002D91e7_002D07d269d04b60/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Any" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Constant fields (not private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="CONSTANT_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=a0b4bc4d_002Dd13b_002D4a37_002Db37e_002Dc9c6864e4302/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Any" AccessRightKinds="Any" Description="Types and namespaces"&gt;&lt;ElementKinds&gt;&lt;Kind Name="NAMESPACE" /&gt;&lt;Kind Name="CLASS" /&gt;&lt;Kind Name="STRUCT" /&gt;&lt;Kind Name="ENUM" /&gt;&lt;Kind Name="DELEGATE" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb_AaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=c873eafb_002Dd57f_002D481d_002D8c93_002D77f6863c2f88/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Static readonly fields (not private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/CSharpFileLayoutPatterns/Pattern/@EntryValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns"&gt;
&lt;TypePattern&gt;
&lt;Entry&gt;
&lt;Entry.SortBy&gt;
&lt;Kind&gt;
&lt;Kind.Order&gt;
&lt;DeclarationKind&gt;Constant&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Field&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Constructor&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Destructor&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Delegate&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Event&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Enum&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Interface&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Property&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Indexer&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Method&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Struct&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Record&lt;/DeclarationKind&gt;
&lt;DeclarationKind&gt;Class&lt;/DeclarationKind&gt;
&lt;/Kind.Order&gt;
&lt;/Kind&gt;
&lt;Access&gt;
&lt;Access.Order&gt;
&lt;AccessModifier&gt;Public&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;Internal&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;ProtectedInternal&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;Protected&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;PrivateProtected&lt;/AccessModifier&gt;
&lt;AccessModifier&gt;Private&lt;/AccessModifier&gt;
&lt;/Access.Order&gt;
&lt;/Access&gt;
&lt;Static /&gt;
&lt;Readonly /&gt;
&lt;Name /&gt;
&lt;/Entry.SortBy&gt;
&lt;/Entry&gt;
&lt;/TypePattern&gt;
&lt;/Patterns&gt;</s:String>
<!-- Environment-->
<s:Boolean x:Key="/Default/Environment/Editor/UseCamelHumps/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002EMemberReordering_002EMigrations_002ECSharpFileLayoutPatternRemoveIsAttributeUpgrade/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean>
<!-- ReSpeller-->
<s:Boolean x:Key="/Default/ReSpeller/ReSpellerEnabled/@EntryValue">True</s:Boolean>
<!-- UserDictionary-->
<s:Boolean x:Key="/Default/UserDictionary/Words/=FLG/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=FLGL/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=RGX/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=RGXL/@EntryIndexedValue">True</s:Boolean>
</wpf:ResourceDictionary>

136
README.md
View File

@ -1,114 +1,106 @@
# NetAdmin # NetAdmin
通用后台权限管理系统、快速开发框架基于C#12/.NET8、Vue3/Vite、Element Plus等现代技术构建具有十分整洁、优雅的编码规范 通用后台权限管理系统、快速开发框架基于C#13/.NET9、Vue3/Vite、ElementPlus等现代技术构建具有十分整洁、优雅的编码规范
[![.NET](https://github.com/nsnail/NetAdmin/actions/workflows/nightly-build.yml/badge.svg)](https://github.com/nsnail/NetAdmin/actions/workflows/nightly-build.yml)
[![.NET](https://github.com/nsnail/NetAdmin/actions/workflows/ci.yml/badge.svg)](https://github.com/nsnail/NetAdmin/actions/workflows/ci.yml)
[![MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/nsnail/NetAdmin/blob/main/LICENSE) [![MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/nsnail/NetAdmin/blob/main/LICENSE)
[![Furion](https://img.shields.io/badge/Furion-4.x-blueviolet.svg)](https://github.com/nsnail/NetAdmin/blob/main/LICENSE)
[![FreeSql](https://img.shields.io/badge/FreeSql-3.x-orange.svg)](https://github.com/nsnail/NetAdmin/blob/main/LICENSE) [![FreeSql](https://img.shields.io/badge/FreeSql-3.x-orange.svg)](https://github.com/nsnail/NetAdmin/blob/main/LICENSE)
## 在线预览 ## 在线预览
http://na.yaopy.com https://na.tools92.top
## 一键运行 ## 一键运行
```shell ```shell
docker run -p 8080:8080 nsnail/netadmin docker run -p 8080:8080 nsnail/netadmin
# 墙内用户请自备梯子
``` ```
## 构建步骤 ## 构建步骤
- 后端 所涉软件均推荐下载zip/tar版本解压即用一键删除不会污染系统环境
1. 检查dotnet-sdk版本>=8.0.0 ```shell
``` shell # 1. 检查 dotnet sdk 版本 >=9.0.0
dotnet --list-sdks dotnet --list-sdks
# 下载 dotnethttps://dotnet.microsoft.com/zh-cn/download/dotnet
# 下载 dotnet https://dotnet.microsoft.com/zh-cn/download/dotnet # 2. 克隆代码仓库
``` git clone --depth 1 https://github.com/nsnail/NetAdmin.git && cd ./NetAdmin
2. 克隆代码仓库
``` shell
git clone https://github.com/nsnail/NetAdmin.git
cd ./NetAdmin
# 下载 git https://git-scm.com/downloads # 3. 确认本机 redis 处于运行状态
``` redis-server # 启动服务器
3. 确保本机redis处于运行状态 redis-cli ping # 连接测试
``` shell # 下载 redis for windowshttps://github.com/redis-windows/redis-windows/releases
redis-cli # 下载 redis for linux/machttps://redis.io/download
# 下载 redis for windows https://github.com/redis-windows/redis-windows/releases # 4. 运行后端 WebApi
# 下载 redis for linux/mac https://redis.io/download dotnet run --project ./src/backend/YourSolution.AdmServer.Host/YourSolution.AdmServer.Host.csproj --urls http://[::]:5010 -is
``` # -i 插入种子数据;-s 同步数据库结构
4. 运行后端WebApi # 浏览器访问 http://localhost:5010 将看到SwaggerKnife4jUI界面
``` shell
dotnet run --project ./src/backend/NetAdmin.BizServer.Host/NetAdmin.BizServer.Host.csproj --urls http://[::]:5010
```
5. 体验WebApi程序
- 浏览器打开 http://localhost:5010 将看到SwaggerKnife4jUI界面
--- # 5. 检查 nodejs 版本 >=20
node -v
# 下载 nodejshttps://nodejs.org/zh-cn/download
- 前端 # 6. 安装 npm 依赖包
1. 检查nodejs版本>=20 cd ./src/frontend/admin && npm install
``` shell
node -v
# 下载 nodejs https://nodejs.org/en/download # 7. 运行前端项目
``` npm run dev
2. 安装npm依赖包 # 浏览器访问 http://localhost:5020 将看到管理界面默认用户名密码root 1234qwer
``` shell ```
cd ./src/frontend/admin
npm install
```
3. 运行前端项目
``` shell
npm run dev
```
4. 体验前端程序
- 浏览器打开 http://localhost:5020 将看到管理界面默认用户名root密码1234qwer
## 文件目录 ## 文件目录
``` ```
+---.github # github 工程文件目录
+---.template.config # dotnet 项目模板配置目录 +---.template.config # dotnet 项目模板配置目录
+---assets # 程序运行需要的资源文件目录 +---assets # 项目资源文件目录
+---dist # 程序编译与分发的二进制文件目录 +---build # 构建相关的工程文件目录
+---docs # 项目文档目录 +---dist # 编译生成的二进制文件目录
+---refs # 引用的第三方项目仓库目录 +---docker # docker 镜像构建文件目录
+---src # 项目源文件目录 +---docs # 项目开发文档目录
+---refs # 引用的第三方包的仓库目录
+---scripts # 各种工具脚本文件目录
+---src # 项目源码文件目录
``` ```
## 后端项目架构 ## 项目架构
```mermaid ```mermaid
flowchart TD flowchart TD
H["NetAdmin.Host\n公共主机层\n.Net自托管主机程序\n输入输出格式化\n数据校验、鉴权\n...所有HTTP管道过滤器中间件"] --> C["NetAdmin.Cache\n公共缓存层\n基于Redis或MemoryCache的缓存策略实现"] sys-host["NetAdmin.SysComponent.Host<br>系统组件:主机层"]
C --> A["NetAdmin.Application\n公共业务逻辑层\n内部服务增删改查\n外部服务增删改查\n...所有业务用例的计算与组合逻辑的模块化)"] sys-cache["NetAdmin.SysComponent.Cache<br>系统组件:缓存层"]
A --> D["NetAdmin.Domain\n数据实体层\n数据库关系实体映射\nDTO数据传输对象\n...所有数据模型的抽象与封装)"] sys-app["NetAdmin.SysComponent.Application<br>系统组件:应用层"]
D --> I["NetAdmin.Infrastructure\n基础设施层\n第三方组件和Nuget包引用\n公共构建和程序运行配置\n公共常量枚举异常定义\n全球化化和多语言\n...所有公共Utility工具"] host["<b>NetAdmin.Host</b><br>框架:主机层<br>.Net自托管主机程序<br>(输入输出格式化)<br>(数据校验、鉴权)<br>...所有HTTP管道过滤器中间件"]
cache["<b>NetAdmin.Cache</b><br>框架:缓存层<br>基于Redis或MemoryCache的缓存策略实现"]
XH["NetAdmin.XXX.Host\nWebApi"]-->H app["<b>NetAdmin.Application</b><br>框架:业务应用层<br>(内部服务增删改查)<br>(外部服务增删改查)<br>...所有业务用例的计算与组合逻辑的模块化)"]
XS["NetAdmin.XXXService\n常驻内存服务"]-->H domain["<b>NetAdmin.Domain</b><br>框架:数据实体层<br>(数据库关系实体映射)<br>DTO数据传输对象<br>...所有数据模型的抽象与封装)"]
XS["NetAdmin.XXXService\n常驻内存服务"]-->XC infra["<b>NetAdmin.Infrastructure</b><br>框架:基础设施层<br>第三方组件和Nuget包引用<br>(公共构建和程序运行配置)<br>(公共常量枚举异常定义)<br>(全球化化和多语言)<br>...所有公共Utility工具"]
XC["NetAdmin.XXX.Cache\n缓存层实例"]-->C biz-host["YourSolution.XXX.Host<br>业务实例:主机层"]
XA["NetAdmin.XXX.Application\n业务逻辑层实例"]-->A biz-cache["YourSolution.XXX.Cache<br>业务实例:缓存层"]
biz-app["YourSolution.XXX.Application<br>业务实例:应用层"]
XH-->XC biz-domain["YourSolution.XXX.Domain<br>业务实例:数据实体层"]
XC-->XA biz-infra["YourSolution.XXX.Infrastructure<br>业务实例:基础设施层"]
biz-host-->biz-cache-->biz-app-->biz-domain-->biz-infra
sys-host-->sys-cache-->sys-app-->domain-->infra
host-->cache-->app-->domain-->infra
biz-host-->sys-host-->host
biz-cache-->sys-cache-->cache
biz-app-->sys-app-->app
biz-domain-->domain
biz-infra-->infra
``` ```
## 引用的开源代码 / 特别鸣谢 ## 特别鸣谢
| 语言 | 集成领域 | 开源库 | | 语言 | 集成领域 | 开源库 |
|------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| C# | Web基础框架 | [ASP.NET Core](https://github.com/dotnet/aspnetcore) | | C# | Web基础框架 | [ASP.NET Core](https://github.com/dotnet/aspnetcore) |
| C# | 快速开发脚手架 | [Furion](https://gitee.com/dotnetchina/Furion) |
| C# | 数据库关系映射 | [FreeSql](https://github.com/dotnetcore/FreeSql) | | C# | 数据库关系映射 | [FreeSql](https://github.com/dotnetcore/FreeSql) |
| C# | 代码质量检查 | [Roslynator.Analyzers](https://github.com/josefpihrt/roslynator) \| [SonarAnalyzer.CSharp](https://github.com/SonarSource/sonar-dotnet) \| [StyleCop.Analyzers](https://github.com/DotNetAnalyzers/StyleCopAnalyzers) | | C# | 代码质量检查 | [Roslynator.Analyzers](https://github.com/josefpihrt/roslynator) \| [SonarAnalyzer.CSharp](https://github.com/SonarSource/sonar-dotnet) \| [StyleCop.Analyzers](https://github.com/DotNetAnalyzers/StyleCopAnalyzers) |
| C# | 单元测试框架 | [xunit](https://github.com/xunit/xunit) \| [coverlet.collector](https://github.com/coverlet-coverage/coverlet) | | C# | 单元测试框架 | [xunit](https://github.com/xunit/xunit) \| [coverlet.collector](https://github.com/coverlet-coverage/coverlet) |
| C# | 分布式锁 | [RedLock.net](https://github.com/samcook/RedLock.net) |
| C# | 控制台终端界面库 | [Spectre.Console](https://github.com/spectreconsole/spectre.console) | | C# | 控制台终端界面库 | [Spectre.Console](https://github.com/spectreconsole/spectre.console) |
| C# | 扩展函数库 | [NSExt](https://github.com/nsnail/ns-ext.git) | | C# | 扩展函数库 | [NSExt](https://github.com/nsnail/ns-ext.git) |
| C# | 图形处理库 | [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp) | | C# | 图形处理库 | [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp) |
@ -116,11 +108,9 @@ XC-->XA
| C# | 性能监控采集 | [prometheus-net.AspNetCore](https://github.com/prometheus-net/prometheus-net) | | C# | 性能监控采集 | [prometheus-net.AspNetCore](https://github.com/prometheus-net/prometheus-net) |
| C# | 雪花ID生成器 | [Yitter.IdGenerator](https://github.com/yitter/idgenerator) | | C# | 雪花ID生成器 | [Yitter.IdGenerator](https://github.com/yitter/idgenerator) |
| C# | 自动化版本管理 | [MinVer](https://github.com/adamralph/minver) | | C# | 自动化版本管理 | [MinVer](https://github.com/adamralph/minver) |
| C# | JavaScript引擎 | [MsieJavaScriptEngine](https://github.com/Taritsyn/MsieJavaScriptEngine) |
| C# | WebApi图形界面 | [IGeekFan.AspNetCore.Knife4jUI](https://github.com/luoyunchong/IGeekFan.AspNetCore.Knife4jUI) |
| TypeScript | SPA基础框架 | [Vue](https://github.com/vuejs/core) | | TypeScript | SPA基础框架 | [Vue](https://github.com/vuejs/core) |
| TypeScript | 前端构建工具 | [Vite](https://github.com/vitejs/vite) | | TypeScript | 前端构建工具 | [Vite](https://github.com/vitejs/vite) |
| TypeScript | UI控件库 | [Element Plus](https://github.com/element-plus/element-plus) | | TypeScript | UI控件库 | [ElementPlus](https://github.com/element-plus/element-plus) |
| TypeScript | CSS解析器 | [Sass](https://github.com/sass/sass) | | TypeScript | CSS解析器 | [Sass](https://github.com/sass/sass) |
| TypeScript | 图表和数据可视化 | [ECharts](https://github.com/apache/echarts) | | TypeScript | 图表和数据可视化 | [ECharts](https://github.com/apache/echarts) |
| JavaScript | 后台管理界面 | [SCUI](https://gitee.com/lolicode/scui) | | JavaScript | 后台管理界面 | [SCUI](https://gitee.com/lolicode/scui) |

View File

@ -1,9 +0,0 @@
{
"$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
"settings": {
"indentation": {
"useTabs": false,
"indentationSize": 4
}
}
}

249
assets/res/CountryCodes.ln Normal file
View File

@ -0,0 +1,249 @@
不丹
东帝汶
中国
中非
丹麦
乌克兰
乌兹别克斯坦
乌干达
乌拉圭
乍得
也门
亚美尼亚
以色列
伊拉克
伊朗
伯利兹
佛得角
俄罗斯
保加利亚
克罗地亚
关岛
冈比亚
冰岛
几内亚
几内亚比绍
列支敦士登
刚果共和国
刚果民主共和国
利比亚
利比里亚
加拿大
加纳
加蓬
匈牙利
北马其顿
北马里亚纳群岛
南乔治亚和南桑威奇群岛
南极洲
南苏丹
南非
博茨瓦纳
卡塔尔
卢旺达
卢森堡
印度
印度尼西亚
危地马拉
厄瓜多尔
厄立特里亚
叙利亚
古巴
台湾
吉尔吉斯斯坦
吉布提
哈萨克斯坦
哥伦比亚
哥斯达黎加
喀麦隆
图瓦卢
土库曼斯坦
土耳其
圣卢西亚
圣基茨和尼维斯
圣多美和普林西比
圣巴泰勒米
圣文森特和格林纳丁斯
圣皮埃尔和密克隆
圣诞岛
圣赫勒拿
圣马力诺
圭亚那
坦桑尼亚
埃及
埃塞俄比亚
基里巴斯
塔吉克斯坦
塞内加尔
塞尔维亚
塞拉利昂
塞浦路斯
塞舌尔
墨西哥
多哥
多米尼克
多米尼加
奥兰
奥地利
委内瑞拉
孟加拉国
安哥拉
安圭拉
安提瓜和巴布达
安道尔
密克罗尼西亚联邦
尼加拉瓜
尼日利亚
尼日尔
尼泊尔
巴勒斯坦
巴哈马
巴基斯坦
巴巴多斯
巴布亚新几内亚
巴拉圭
巴拿马
巴林
巴西
布基纳法索
布隆迪
布韦岛
希腊
帕劳
库克群岛
库拉索
开曼群岛
德国
意大利
所罗门群岛
托克劳
拉脱维亚
挪威
捷克
摩尔多瓦
摩洛哥
摩纳哥
文莱
斐济
斯威士兰
斯洛伐克
斯洛文尼亚
斯瓦尔巴和扬马延
斯里兰卡
新加坡
新喀里多尼亚
新西兰
日本
智利
朝鲜
柬埔寨
根西
格林纳达
格陵兰
格鲁吉亚
梵蒂冈
比利时
毛里塔尼亚
毛里求斯
汤加
沙特阿拉伯
法国
法属南部和南极领地
法属圣马丁
法属圭亚那
法属波利尼西亚
法罗群岛
波兰
波多黎各
波黑
泰国
泽西
津巴布韦
洪都拉斯
海地
澳大利亚
澳门
爱尔兰
爱沙尼亚
牙买加
特克斯和凯科斯群岛
特立尼达和多巴哥
玻利维亚
瑙鲁
瑞典
瑞士
瓜德罗普
瓦利斯和富图纳
瓦努阿图
留尼汪
白俄罗斯
百慕大
皮特凯恩群岛
直布罗陀
福克兰群岛
科威特
科摩罗
科特迪瓦
科科斯基林群岛
秘鲁
突尼斯
立陶宛
索马里
约旦
纳米比亚
纽埃
缅甸
罗马尼亚
美国
美国本土外小岛屿
美属维尔京群岛
美属萨摩亚
老挝
肯尼亚
芬兰
苏丹
苏里南
英国
英属印度洋领地
英属维尔京群岛
荷兰
荷兰加勒比区
荷属圣马丁
莫桑比克
莱索托
菲律宾
萨尔瓦多
萨摩亚
葡萄牙
蒙古
蒙特塞拉特
西撒哈拉
西班牙
诺福克岛
贝宁
赞比亚
赤道几内亚
赫德岛和麦克唐纳群岛
越南
阿塞拜疆
阿富汗
阿尔及利亚
阿尔巴尼亚
阿曼
阿根廷
阿联酋
阿鲁巴
韩国
香港
马尔代夫
马恩岛
马拉维
马提尼克
马来西亚
马约特
马绍尔群岛
马耳他
马达加斯加
马里
黎巴嫩
黑山

View File

@ -1,255 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
// ReSharper disable DuplicateResource
<data name="_1分钟内只能发送1次" xml:space="preserve"><value>1分钟内只能发送1次</value></data>
<data name="_6位数字" xml:space="preserve"><value>6位数字</value></data>
<data name="_8位以上数字字母组合" xml:space="preserve"><value>8位以上数字字母组合</value></data>
<data name="XML注释文件不存在" xml:space="preserve"><value>XML注释文件不存在</value></data>
<data name="不为其中之一" xml:space="preserve"><value>不为其中之一</value></data>
<data name="不以什么开始" xml:space="preserve"><value>不以什么开始</value></data>
<data name="不以什么结束" xml:space="preserve"><value>不以什么结束</value></data>
<data name="不包含" xml:space="preserve"><value>不包含</value></data>
<data name="不等于" xml:space="preserve"><value>不等于</value></data>
<data name="业务模块" xml:space="preserve"><value>业务模块</value></data>
<data name="东乡族" xml:space="preserve"><value>东乡族</value></data>
<data name="丧偶" xml:space="preserve"><value>丧偶</value></data>
<data name="中专" xml:space="preserve"><value>中专</value></data>
<data name="中共党员" xml:space="preserve"><value>中共党员</value></data>
<data name="中文姓名" xml:space="preserve"><value>中文姓名</value></data>
<data name="为其中之一" xml:space="preserve"><value>为其中之一</value></data>
<data name="乌孜别克族" xml:space="preserve"><value>乌孜别克族</value></data>
<data name="事务已回滚" xml:space="preserve"><value>事务已回滚</value></data>
<data name="事务已提交" xml:space="preserve"><value>事务已提交</value></data>
<data name="京族" xml:space="preserve"><value>京族</value></data>
<data name="人机校验请求不能为空" xml:space="preserve"><value>人机校验请求不能为空</value></data>
<data name="人机验证未通过" xml:space="preserve"><value>人机验证未通过</value></data>
<data name="仡佬族" xml:space="preserve"><value>仡佬族</value></data>
<data name="以什么开始" xml:space="preserve"><value>以什么开始</value></data>
<data name="以什么结束" xml:space="preserve"><value>以什么结束</value></data>
<data name="仫佬族" xml:space="preserve"><value>仫佬族</value></data>
<data name="佤族" xml:space="preserve"><value>佤族</value></data>
<data name="侗族" xml:space="preserve"><value>侗族</value></data>
<data name="俄罗斯族" xml:space="preserve"><value>俄罗斯族</value></data>
<data name="保安族" xml:space="preserve"><value>保安族</value></data>
<data name="保密" xml:space="preserve"><value>保密</value></data>
<data name="信息" xml:space="preserve"><value>信息</value></data>
<data name="倒序排序" xml:space="preserve"><value>倒序排序</value></data>
<data name="傈僳族" xml:space="preserve"><value>傈僳族</value></data>
<data name="傣族" xml:space="preserve"><value>傣族</value></data>
<data name="允许的文件大小" xml:space="preserve"><value>允许的文件大小</value></data>
<data name="允许的文件格式" xml:space="preserve"><value>允许的文件格式</value></data>
<data name="全部数据" xml:space="preserve"><value>全部数据</value></data>
<data name="公告" xml:space="preserve"><value>公告</value></data>
<data name="共青团员" xml:space="preserve"><value>共青团员</value></data>
<data name="出生证" xml:space="preserve"><value>出生证</value></data>
<data name="初中" xml:space="preserve"><value>初中</value></data>
<data name="删除" xml:space="preserve"><value>删除</value></data>
<data name="包含" xml:space="preserve"><value>包含</value></data>
<data name="区号电话号码分机号" xml:space="preserve"><value>区号电话号码分机号</value></data>
<data name="博士" xml:space="preserve"><value>博士</value></data>
<data name="博士后" xml:space="preserve"><value>博士后</value></data>
<data name="参数格式不正确" xml:space="preserve"><value>参数格式不正确</value></data>
<data name="发送失败" xml:space="preserve"><value>发送失败</value></data>
<data name="同步数据库结构" xml:space="preserve"><value>同步数据库结构</value></data>
<data name="哈尼族" xml:space="preserve"><value>哈尼族</value></data>
<data name="哈萨克族" xml:space="preserve"><value>哈萨克族</value></data>
<data name="唯一编码不能为空" xml:space="preserve"><value>唯一编码不能为空</value></data>
<data name="回族" xml:space="preserve"><value>回族</value></data>
<data name="图标代码不能为空" xml:space="preserve"><value>图标代码不能为空</value></data>
<data name="图标名称不能为空" xml:space="preserve"><value>图标名称不能为空</value></data>
<data name="土家族" xml:space="preserve"><value>土家族</value></data>
<data name="土族" xml:space="preserve"><value>土族</value></data>
<data name="基诺族" xml:space="preserve"><value>基诺族</value></data>
<data name="塔吉克族" xml:space="preserve"><value>塔吉克族</value></data>
<data name="塔塔尔族" xml:space="preserve"><value>塔塔尔族</value></data>
<data name="壮族" xml:space="preserve"><value>壮族</value></data>
<data name="外国人居留证" xml:space="preserve"><value>外国人居留证</value></data>
<data name="大专" xml:space="preserve"><value>大专</value></data>
<data name="大于" xml:space="preserve"><value>大于</value></data>
<data name="大于等于" xml:space="preserve"><value>大于等于</value></data>
<data name="女" xml:space="preserve"><value>女</value></data>
<data name="字典名称不能为空" xml:space="preserve"><value>字典名称不能为空</value></data>
<data name="字典目录不存在" xml:space="preserve"><value>字典目录不存在</value></data>
<data name="字典目录编号不能为空" xml:space="preserve"><value>字典目录编号不能为空</value></data>
<data name="字典编码不能为空" xml:space="preserve"><value>字典编码不能为空</value></data>
<data name="宕机" xml:space="preserve"><value>宕机</value></data>
<data name="密码不能为空" xml:space="preserve"><value>密码不能为空</value></data>
<data name="小于" xml:space="preserve"><value>小于</value></data>
<data name="小于等于" xml:space="preserve"><value>小于等于</value></data>
<data name="小学" xml:space="preserve"><value>小学</value></data>
<data name="已发送" xml:space="preserve"><value>已发送</value></data>
<data name="已婚" xml:space="preserve"><value>已婚</value></data>
<data name="已完成" xml:space="preserve"><value>已完成</value></data>
<data name="已校验" xml:space="preserve"><value>已校验</value></data>
<data name="已读" xml:space="preserve"><value>已读</value></data>
<data name="布依族" xml:space="preserve"><value>布依族</value></data>
<data name="布朗族" xml:space="preserve"><value>布朗族</value></data>
<data name="并且" xml:space="preserve"><value>并且</value></data>
<data name="开始事务" xml:space="preserve"><value>开始事务</value></data>
<data name="彝族" xml:space="preserve"><value>彝族</value></data>
<data name="德昂族" xml:space="preserve"><value>德昂族</value></data>
<data name="怒族" xml:space="preserve"><value>怒族</value></data>
<data name="意外错误" xml:space="preserve"><value>意外错误</value></data>
<data name="成功" xml:space="preserve"><value>成功</value></data>
<data name="或者" xml:space="preserve"><value>或者</value></data>
<data name="手机" xml:space="preserve"><value>手机</value></data>
<data name="手机号码" xml:space="preserve"><value>手机号码</value></data>
<data name="手机号码不正确" xml:space="preserve"><value>手机号码不正确</value></data>
<data name="护照" xml:space="preserve"><value>护照</value></data>
<data name="拉祜族族" xml:space="preserve"><value>拉祜族族</value></data>
<data name="指定部门数据" xml:space="preserve"><value>指定部门数据</value></data>
<data name="按钮" xml:space="preserve"><value>按钮</value></data>
<data name="插入种子数据" xml:space="preserve"><value>插入种子数据</value></data>
<data name="撒拉族" xml:space="preserve"><value>撒拉族</value></data>
<data name="支付宝账号" xml:space="preserve"><value>支付宝账号</value></data>
<data name="数据库同步开始" xml:space="preserve"><value>数据库同步开始</value></data>
<data name="数据库服务器时钟偏移" xml:space="preserve"><value>数据库服务器时钟偏移</value></data>
<data name="数据库结构同步完成" xml:space="preserve"><value>数据库结构同步完成</value></data>
<data name="数据版本不能为空" xml:space="preserve"><value>数据版本不能为空</value></data>
<data name="文件不能为空" xml:space="preserve"><value>文件不能为空</value></data>
<data name="新密码不能为空" xml:space="preserve"><value>新密码不能为空</value></data>
<data name="新手机号码" xml:space="preserve"><value>新手机号码</value></data>
<data name="新手机号码验证码不正确" xml:space="preserve"><value>新手机号码验证码不正确</value></data>
<data name="无效操作" xml:space="preserve"><value>无效操作</value></data>
<data name="无效端口号" xml:space="preserve"><value>无效端口号</value></data>
<data name="无效证件号码" xml:space="preserve"><value>无效证件号码</value></data>
<data name="无效输入" xml:space="preserve"><value>无效输入</value></data>
<data name="日志长度超过限制" xml:space="preserve"><value>日志长度超过限制</value></data>
<data name="日期范围" xml:space="preserve"><value>日期范围</value></data>
<data name="旧密码不正确" xml:space="preserve"><value>旧密码不正确</value></data>
<data name="旧密码不能为空" xml:space="preserve"><value>旧密码不能为空</value></data>
<data name="旧手机号码" xml:space="preserve"><value>旧手机号码</value></data>
<data name="旧手机号码不正确" xml:space="preserve"><value>旧手机号码不正确</value></data>
<data name="旧手机号码验证码不正确" xml:space="preserve"><value>旧手机号码验证码不正确</value></data>
<data name="时间戳缺失或误差过大" xml:space="preserve"><value>时间戳缺失或误差过大</value></data>
<data name="普米族" xml:space="preserve"><value>普米族</value></data>
<data name="景颇族" xml:space="preserve"><value>景颇族</value></data>
<data name="朝鲜族" xml:space="preserve"><value>朝鲜族</value></data>
<data name="未婚" xml:space="preserve"><value>未婚</value></data>
<data name="未指定部门" xml:space="preserve"><value>未指定部门</value></data>
<data name="未读" xml:space="preserve"><value>未读</value></data>
<data name="本人数据" xml:space="preserve"><value>本人数据</value></data>
<data name="本科" xml:space="preserve"><value>本科</value></data>
<data name="本部门和下级部门数据" xml:space="preserve"><value>本部门和下级部门数据</value></data>
<data name="本部门数据" xml:space="preserve"><value>本部门数据</value></data>
<data name="柯尔克孜族" xml:space="preserve"><value>柯尔克孜族</value></data>
<data name="框架" xml:space="preserve"><value>框架</value></data>
<data name="模块名称不能为空" xml:space="preserve"><value>模块名称不能为空</value></data>
<data name="模块说明不能为空" xml:space="preserve"><value>模块说明不能为空</value></data>
<data name="比较数据库结构" xml:space="preserve"><value>比较数据库结构</value></data>
<data name="毛南族" xml:space="preserve"><value>毛南族</value></data>
<data name="水族" xml:space="preserve"><value>水族</value></data>
<data name="汉族" xml:space="preserve"><value>汉族</value></data>
<data name="注册" xml:space="preserve"><value>注册</value></data>
<data name="消息主题不能为空" xml:space="preserve"><value>消息主题不能为空</value></data>
<data name="消息内容不能为空" xml:space="preserve"><value>消息内容不能为空</value></data>
<data name="港澳台通行证" xml:space="preserve"><value>港澳台通行证</value></data>
<data name="满族" xml:space="preserve"><value>满族</value></data>
<data name="父节点不存在" xml:space="preserve"><value>父节点不存在</value></data>
<data name="独龙族" xml:space="preserve"><value>独龙族</value></data>
<data name="珞巴族" xml:space="preserve"><value>珞巴族</value></data>
<data name="瑶族" xml:space="preserve"><value>瑶族</value></data>
<data name="用户不存在" xml:space="preserve"><value>用户不存在</value></data>
<data name="用户名不能为空" xml:space="preserve"><value>用户名不能为空</value></data>
<data name="用户名不能是手机号" xml:space="preserve"><value>用户名不能是手机号</value></data>
<data name="用户名或密码错误" xml:space="preserve"><value>用户名或密码错误</value></data>
<data name="用户名长度4位以上" xml:space="preserve"><value>用户名长度4位以上</value></data>
<data name="用户头像不能为空" xml:space="preserve"><value>用户头像不能为空</value></data>
<data name="用户档案不能为空" xml:space="preserve"><value>用户档案不能为空</value></data>
<data name="电子邮箱" xml:space="preserve"><value>电子邮箱</value></data>
<data name="男" xml:space="preserve"><value>男</value></data>
<data name="畲族" xml:space="preserve"><value>畲族</value></data>
<data name="登录" xml:space="preserve"><value>登录</value></data>
<data name="白族" xml:space="preserve"><value>白族</value></data>
<data name="目标设备不能为空" xml:space="preserve"><value>目标设备不能为空</value></data>
<data name="短信验证请求不能为空" xml:space="preserve"><value>短信验证请求不能为空</value></data>
<data name="硕士" xml:space="preserve"><value>硕士</value></data>
<data name="离异" xml:space="preserve"><value>离异</value></data>
<data name="私信" xml:space="preserve"><value>私信</value></data>
<data name="站内信不存在" xml:space="preserve"><value>站内信不存在</value></data>
<data name="等于" xml:space="preserve"><value>等于</value></data>
<data name="等待发送" xml:space="preserve"><value>等待发送</value></data>
<data name="签名缺失" xml:space="preserve"><value>签名缺失</value></data>
<data name="系统模块" xml:space="preserve"><value>系统模块</value></data>
<data name="纳西族" xml:space="preserve"><value>纳西族</value></data>
<data name="绑定手机号" xml:space="preserve"><value>绑定手机号</value></data>
<data name="结果非预期" xml:space="preserve"><value>结果非预期</value></data>
<data name="维吾尔族" xml:space="preserve"><value>维吾尔族</value></data>
<data name="羌族" xml:space="preserve"><value>羌族</value></data>
<data name="群众" xml:space="preserve"><value>群众</value></data>
<data name="自定义" xml:space="preserve"><value>自定义</value></data>
<data name="苗族" xml:space="preserve"><value>苗族</value></data>
<data name="范围" xml:space="preserve"><value>范围</value></data>
<data name="菜单" xml:space="preserve"><value>菜单</value></data>
<data name="菜单名称不能为空" xml:space="preserve"><value>菜单名称不能为空</value></data>
<data name="菜单标题不能为空" xml:space="preserve"><value>菜单标题不能为空</value></data>
<data name="菜单编号不能为空" xml:space="preserve"><value>菜单编号不能为空</value></data>
<data name="蒙古族" xml:space="preserve"><value>蒙古族</value></data>
<data name="藏族" xml:space="preserve"><value>藏族</value></data>
<data name="裕固族" xml:space="preserve"><value>裕固族</value></data>
<data name="角色不存在" xml:space="preserve"><value>角色不存在</value></data>
<data name="角色名称不能为空" xml:space="preserve"><value>角色名称不能为空</value></data>
<data name="角色编号不能为空" xml:space="preserve"><value>角色编号不能为空</value></data>
<data name="角色编号列表不能为空" xml:space="preserve"><value>角色编号列表不能为空</value></data>
<data name="解绑手机号" xml:space="preserve"><value>解绑手机号</value></data>
<data name="警告" xml:space="preserve"><value>警告</value></data>
<data name="设备类型不能为空" xml:space="preserve"><value>设备类型不能为空</value></data>
<data name="该角色下存在用户" xml:space="preserve"><value>该角色下存在用户</value></data>
<data name="该部门下存在子部门" xml:space="preserve"><value>该部门下存在子部门</value></data>
<data name="该部门下存在用户" xml:space="preserve"><value>该部门下存在用户</value></data>
<data name="请求" xml:space="preserve"><value>请求</value></data>
<data name="请求对象不能为空" xml:space="preserve"><value>请求对象不能为空</value></data>
<data name="请联系管理员激活账号" xml:space="preserve"><value>请联系管理员激活账号</value></data>
<data name="读取用户令牌出错" xml:space="preserve"><value>读取用户令牌出错</value></data>
<data name="调试" xml:space="preserve"><value>调试</value></data>
<data name="账号不能为空" xml:space="preserve"><value>账号不能为空</value></data>
<data name="赫哲族" xml:space="preserve"><value>赫哲族</value></data>
<data name="跟踪" xml:space="preserve"><value>跟踪</value></data>
<data name="身份证" xml:space="preserve"><value>身份证</value></data>
<data name="达斡尔族" xml:space="preserve"><value>达斡尔族</value></data>
<data name="邀请码不正确" xml:space="preserve"><value>邀请码不正确</value></data>
<data name="邮箱验证码不正确" xml:space="preserve"><value>邮箱验证码不正确</value></data>
<data name="部门不存在" xml:space="preserve"><value>部门不存在</value></data>
<data name="部门名称不能为空" xml:space="preserve"><value>部门名称不能为空</value></data>
<data name="鄂伦春族" xml:space="preserve"><value>鄂伦春族</value></data>
<data name="鄂温克族" xml:space="preserve"><value>鄂温克族</value></data>
<data name="配置文件初始化完毕" xml:space="preserve"><value>配置文件初始化完毕</value></data>
<data name="重设密码" xml:space="preserve"><value>重设密码</value></data>
<data name="链接" xml:space="preserve"><value>链接</value></data>
<data name="错误" xml:space="preserve"><value>错误</value></data>
<data name="锡伯族" xml:space="preserve"><value>锡伯族</value></data>
<data name="键值不能为空" xml:space="preserve"><value>键值不能为空</value></data>
<data name="键名称不能为空" xml:space="preserve"><value>键名称不能为空</value></data>
<data name="门巴族" xml:space="preserve"><value>门巴族</value></data>
<data name="阿昌族" xml:space="preserve"><value>阿昌族</value></data>
<data name="顺序排序" xml:space="preserve"><value>顺序排序</value></data>
<data name="验证数据不能为空" xml:space="preserve"><value>验证数据不能为空</value></data>
<data name="验证码不正确" xml:space="preserve"><value>验证码不正确</value></data>
<data name="验证码不能为空" xml:space="preserve"><value>验证码不能为空</value></data>
<data name="验证码类型不能为空" xml:space="preserve"><value>验证码类型不能为空</value></data>
<data name="高中" xml:space="preserve"><value>高中</value></data>
<data name="高山族" xml:space="preserve"><value>高山族</value></data>
<data name="黎族" xml:space="preserve"><value>黎族</value></data>
</root>

56
assets/res/Nations.ln Normal file
View File

@ -0,0 +1,56 @@
东乡族
乌孜别克族
京族
仡佬族
仫佬族
佤族
侗族
俄罗斯族
保安族
傈僳族
傣族
哈尼族
哈萨克族
回族
土家族
土族
基诺族
塔吉克族
塔塔尔族
壮族
布依族
布朗族
彝族
德昂族
怒族
拉祜族族
撒拉族
普米族
景颇族
朝鲜族
柯尔克孜族
毛南族
水族
汉族
满族
独龙族
珞巴族
瑶族
畲族
白族
纳西族
维吾尔族
羌族
苗族
蒙古族
藏族
裕固族
赫哲族
达斡尔族
鄂伦春族
鄂温克族
锡伯族
门巴族
阿昌族
高山族
黎族

View File

@ -0,0 +1,149 @@
上次执行时间
上次执行状态
上次执行耗时
下次执行时间
不为其中之一
不以什么开始
不以什么结束
不包含
不排序
不等于
丧偶
中专
中共党员
为其中之一
人工审核
以什么开始
以什么结束
作业名称
作业状态
保密
信息
倒序排序
全部数据
公告
共青团员
出生证
创建时间
初中
删除
包含
博士
博士后
发送失败
同步数据库结构
响应体
响应状态码
唯一编码
备注
外国人居留证
外部错误
大专
大于
大于等于
字典内容导出
宕机
客户端IP
小于
小于等于
小学
已发送
已婚
已校验
已读
并且
成功
或者
所属角色
所属部门
手机
手机号
执行耗时
执行计划
护照
指定部门数据
按钮
排序
接口名称
接口导出
接口描述
接口路径
插入种子数据
操作系统
数据范围
文档内容
文档内容导出
文档标题
无效操作
无效输入
无限权限
日期范围
是否启用
显示仪表板
最后登录时间
未处理异常
未婚
未读
本人数据
本科
本部门和下级部门数据
本部门数据
框架
比较数据库结构
注册
消息主题
消息摘要
消息类型
港澳台通行证
用户代理
用户名
用户导出
电子邮箱
登录
登录名
登录日志导出
硕士
示例导出
离异
空闲
站内信导出
等于
等待发送
管理模块
系统模块
绑定手机号码
结果非预期
群众
自定义
范围
菜单
角色名称
角色导出
解绑手机号码
警告
计划作业导出
计划作业执行记录导出
请求方式
请求日志导出
调试
追踪
追踪标识
身份证
运行
通知
邮箱号
部门名称
部门导出
配置导出
重设密码
链接
错误
随机排序
项值
项名
顺序排序
高中
默认角色
默认部门

View File

@ -2,228 +2,120 @@
6位数字 6位数字
8位以上数字字母组合 8位以上数字字母组合
XML注释文件不存在 XML注释文件不存在
不为其中之一
不以什么开始
不以什么结束
不包含
不等于
业务模块
东乡族
丧偶
中专
中共党员
中文姓名 中文姓名
为其中之一
乌孜别克族
事务已回滚 事务已回滚
事务已提交 事务已提交
京族
人机校验请求不能为空 人机校验请求不能为空
人机验证未通过 人机验证未通过
仡佬族 作业名称不能为空
以什么开始
以什么结束
仫佬族
佤族
侗族
俄罗斯族
保安族
保密
信息
倒序排序
傈僳族
傣族
允许的文件大小 允许的文件大小
允许的文件格式 允许的文件格式
全部数据
公告
共青团员
出生证
初中
删除
包含
区号电话号码分机号 区号电话号码分机号
博士
博士后
参数格式不正确 参数格式不正确
发送失败
同步数据库结构
哈尼族
哈萨克族
唯一编码不能为空 唯一编码不能为空
回族
图标代码不能为空 图标代码不能为空
图标名称不能为空 图标名称不能为空
土家族 婚姻状况不正确
土族
基诺族
塔吉克族
塔塔尔族
壮族
外国人居留证
大专
大于
大于等于
字典名称不能为空 字典名称不能为空
字典目录不存在 字典目录不存在
字典目录编号不能为空 字典目录编号不能为空
字典编码不能为空 字典编码不能为空
宕机 学历不正确
完全公开
密码不能为空 密码不能为空
小于 已处理完毕
小于等于 并发冲突_请稍后重试
小学
已发送
已婚
已完成
已校验
已读
布依族
布朗族
并且
开始事务 开始事务
彝族 性别不正确
德昂族
怒族
意外错误
成功
或者
手机
手机号码
手机号码不正确 手机号码不正确
护照 手机号码不能为空
拉祜族族 接口编码不存在
指定部门数据
按钮
插入种子数据
撒拉族
支付宝账号 支付宝账号
政治面貌不正确
数据库同步开始 数据库同步开始
数据库服务器时钟偏移 数据库服务器时钟偏移
数据库结构同步完成 数据库结构同步完成
数据版本不能为空
文件不能为空 文件不能为空
文档内容不能为空
文档分类不存在
文档分类名称不能为空
文档分类编号不能为空
文档分类编码不能为空
文档标题不能为空
新密码不能为空 新密码不能为空
新手机号码
新手机号码验证码不正确 新手机号码验证码不正确
无效操作
无效端口号 无效端口号
无效证件号码 无效证件号码
无效输入
日志长度超过限制
日期范围
旧密码不正确 旧密码不正确
旧密码不能为空 旧密码不能为空
旧手机号码
旧手机号码不正确 旧手机号码不正确
旧手机号码验证码不正确 旧手机号码验证码不正确
时间戳缺失或误差过大 时间表达式
普米族 时间计划不能为空
景颇族
朝鲜族
未婚
未指定部门 未指定部门
未读 未获取到待执行任务
本人数据 档案可见性不正确
本科
本部门和下级部门数据
本部门数据
柯尔克孜族
框架
模块名称不能为空 模块名称不能为空
模块类型不能为空
模块说明不能为空 模块说明不能为空
比较数据库结构 此节点已下线
毛南族 民族不正确
水族
汉族
注册
消息主题不能为空 消息主题不能为空
消息内容不能为空 消息内容不能为空
港澳台通行证
满族
父节点不存在 父节点不存在
独龙族
珞巴族
瑶族
用户不存在 用户不存在
用户名不能为空 用户名不能为空
用户名不能是手机号 用户名不能是手机号码
用户名或密码错误 用户名或密码错误
用户名长度4位以上 用户名长度4位以上
用户头像不能为空 用户头像不能为空
用户档案不能为空 用户编号不存在
电子邮箱 登录用户
畲族
登录
白族
目标设备不能为空 目标设备不能为空
短信验证请求不能为空 短信验证请求不能为空
硕士 种子数据插入完成
离异
私信
站内信不存在 站内信不存在
等于 站内信状态不正确
等待发送 站内信类型不正确
签名缺失 缓存键不能为空
系统模块 网络地址不正确
纳西族 自己可见
绑定手机号
结果非预期
维吾尔族
羌族
群众
自定义
苗族
范围
菜单
菜单名称不能为空 菜单名称不能为空
菜单标题不能为空 菜单标题不能为空
菜单类型不正确
菜单编号不能为空 菜单编号不能为空
蒙古族
藏族
裕固族
角色不存在 角色不存在
角色名称不能为空 角色名称不能为空
角色数据范围不正确
角色编号不能为空 角色编号不能为空
角色编号列表不能为空 角色编号列表不能为空
解绑手机号 记录已存在
警告
设备类型不能为空 设备类型不能为空
证件类型不正确
该角色下存在用户 该角色下存在用户
该部门下存在子部门 该部门下存在子部门
该部门下存在用户 该部门下存在用户
请求 请求地址不能为空
请求对象不能为空 请求对象不能为空
请求方法不正确
请稍后重试
请联系管理员激活账号 请联系管理员激活账号
读取用户令牌出错 读取用户令牌出错
调试
账号不能为空 账号不能为空
赫哲族
跟踪
身份证
达斡尔族
邀请码不正确 邀请码不正确
邮箱验证码不正确 邮箱验证码不正确
部门不存在 部门不存在
部门可见
部门名称不能为空 部门名称不能为空
鄂伦春族
鄂温克族
配置文件初始化完毕 配置文件初始化完毕
重设密码
链接
错误
锡伯族
键值不能为空 键值不能为空
键名称不能为空 键名称不能为空
门巴族 随机延时结束时间不正确
阿昌族 随机延时起始时间不正确
顺序排序 非JSON字符串
验证数据不能为空 验证数据不能为空
验证码不正确 验证码不正确
验证码不能为空 验证码不能为空
验证码类型不能为空 验证码目标设备类型不正确
高中 验证码类型不正确
高山族 验证码类型不能为空
黎族

View File

@ -1,8 +1,8 @@
[ [
{ {
"Enabled": true,
"Id": 372119301627909, "Id": 372119301627909,
"Name": "默认部门", "Name": "默认部门",
"Enabled": true,
"Sort": 100 "Sort": 100
} }
] ]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
[
{
"Enabled": true,
"ExecutionCron": "0 * * * * ?",
"HttpMethod": 3,
"JobName": "HTTP 请求测试",
"NextExecTime": "2020-09-13 12:26:40",
"NextTimeId": 1600000000,
"RequestUrl": "https://httpbin.org/ip",
"Status": 1,
"UserId": 370942943322181,
}
]

View File

@ -1,28 +1,30 @@
[ [
// ------------------------------ ------------------------------
{ {
"Component": "home", "Component": "home",
"Icon": "el-icon-house", "Icon": "el-icon-house",
"Id": 373837717815301, "Id": 373837717815301,
"Name": "home", "Name": "home",
"Path": "/home", "Path": "/home",
"Sort": 100, "Sort": 999,
"Title": "面板", "Title": "控面板",
"Type": 1 "Type": 1
}, },
// ------------------------------ ------------------------------
{ {
"Icon": "el-icon-setting", "Icon": "el-icon-setting",
"Id": 373837917724677, "Id": 373837917724677,
"Name": "sys", "Name": "power",
"Path": "/sys", "Path": "/power",
"Sort": 99, "Sort": 100,
"Title": "系统管理", "Title": "权限管理",
"Type": 1 "Type": 1
}, },
{ {
"Component": "sys/user", "Component": "sys/user",
"Icon": "el-icon-user", "Icon": "el-icon-user",
"Id": 373837957840901, "Id": 373837957840901,
"Name": "sys-user", "Name": "sys/user",
"ParentId": 373837917724677, "ParentId": 373837917724677,
"Path": "/sys/user", "Path": "/sys/user",
"Sort": 100, "Sort": 100,
@ -33,7 +35,7 @@
"Component": "sys/role", "Component": "sys/role",
"Icon": "sc-icon-role", "Icon": "sc-icon-role",
"Id": 373838018527237, "Id": 373838018527237,
"Name": "sys-role", "Name": "sys/role",
"ParentId": 373837917724677, "ParentId": 373837917724677,
"Path": "/sys/role", "Path": "/sys/role",
"Sort": 99, "Sort": 99,
@ -44,7 +46,7 @@
"Component": "sys/dept", "Component": "sys/dept",
"Icon": "sc-icon-dept", "Icon": "sc-icon-dept",
"Id": 373838045605893, "Id": 373838045605893,
"Name": "sys-dept", "Name": "sys/dept",
"ParentId": 373837917724677, "ParentId": 373837917724677,
"Path": "/sys/dept", "Path": "/sys/dept",
"Sort": 98, "Sort": 98,
@ -55,96 +57,149 @@
"Component": "sys/menu", "Component": "sys/menu",
"Icon": "el-icon-fold", "Icon": "el-icon-fold",
"Id": 373838070898693, "Id": 373838070898693,
"Name": "sys-menu", "Name": "sys/menu",
"ParentId": 373837917724677, "ParentId": 373837917724677,
"Path": "/sys/menu", "Path": "/sys/menu",
"Sort": 96, "Sort": 97,
"Title": "菜单管理", "Title": "菜单管理",
"Type": 1 "Type": 1
}, },
// ------------------------------ ------------------------------
{ {
"Component": "sys/log", "Icon": "sc-icon-App",
"Icon": "el-icon-tickets", "Id": 485278637670422,
"Id": 374792687640581, "Name": "sys",
"Name": "sys-log", "Path": "/sys",
"ParentId": 373837917724677, "Sort": 99,
"Path": "/sys/log", "Title": "系统管理",
"Sort": 93,
"Title": "请求日志",
"Type": 1
},
{
"Component": "sys/cache",
"Icon": "sc-icon-memory",
"Id": 374911555702789,
"Name": "sys-cache",
"ParentId": 373837917724677,
"Path": "/sys/cache",
"Sort": 94,
"Title": "缓存管理",
"Type": 1
},
{
"Component": "sys/dic",
"Icon": "sc-icon-dic",
"Id": 375315654221829,
"Name": "sys-dic",
"ParentId": 373837917724677,
"Path": "/sys/dic",
"Sort": 95,
"Title": "字典管理",
"Type": 1 "Type": 1
}, },
{ {
"Component": "sys/config", "Component": "sys/config",
"Icon": "el-icon-set-up", "Icon": "el-icon-set-up",
"Id": 380415005847557, "Id": 380415005847557,
"Name": "sys-config", "Name": "sys/config",
"ParentId": 373837917724677, "ParentId": 485278637670422,
"Path": "/sys/config", "Path": "/sys/config",
"Sort": 92, "Sort": 100,
"Title": "系统设置", "Title": "系统设置",
"Type": 1 "Type": 1
}, },
{ {
"Component": "home/widgets/components/ver", "Component": "sys/job",
"Icon": "el-icon-pointer", "Icon": "sc-icon-ScheduledJob",
"Id": 480998862188554, "Id": 510067557638158,
"Name": "sys-about", "Name": "sys/job",
"ParentId": 373837917724677, "ParentId": 485278637670422,
"Path": "/sys/about", "Path": "/sys/job",
"Sort": 91, "Sort": 99,
"Title": "版本信息", "Title": "计划作业",
"Type": 1, "Type": 1
}, },
{ {
"Component": "sys/api", "Component": "sys/dic",
"Icon": "sc-icon-api", "Icon": "sc-icon-dic",
"Id": 397880678895621, "Id": 375315654221829,
"Name": "sys-api", "Name": "sys/dic",
"ParentId": 373837917724677, "ParentId": 485278637670422,
"Path": "/sys/api", "Path": "/sys/dic",
"Sort": 96, "Sort": 98,
"Title": "接口管理", "Title": "字典管理",
"Type": 1 "Type": 1
}, },
{ {
"Component": "sys/msg", "Component": "sys/msg",
"Icon": "el-icon-message", "Icon": "el-icon-message",
"Id": 482779610341392, "Id": 482779610341392,
"Name": "sys-msg", "Name": "sys/msg",
"ParentId": 373837917724677, "ParentId": 485278637670422,
"Path": "/sys/msg", "Path": "/sys/msg",
"Sort": 98, "Sort": 97,
"Title": "消息管理", "Title": "消息管理",
"Type": 1, "Type": 1,
}, },
{
"Component": "sys/api",
"Icon": "sc-icon-api",
"Id": 397880678895621,
"Name": "sys/api",
"ParentId": 485278637670422,
"Path": "/sys/api",
"Sort": 96,
"Title": "接口管理",
"Type": 1
},
{
"Component": "sys/cache",
"Icon": "sc-icon-memory",
"Id": 374911555702789,
"Name": "sys/cache",
"ParentId": 485278637670422,
"Path": "/sys/cache",
"Sort": 95,
"Title": "缓存管理",
"Type": 1
},
// ------------------------------ ------------------------------
{
"Icon": "sc-icon-Archive",
"Id": 616214756757512,
"Name": "archive",
"Path": "/archive",
"Sort": 98,
"Title": "档案管理",
"Type": 1
},
{
"Component": "sys/doc",
"Icon": "el-icon-document",
"Id": 616214756757516,
"Name": "archive/doc",
"ParentId": 616214756757512,
"Path": "/archive/doc",
"Sort": 100,
"Title": "文档管理",
"Type": 1
},
// ------------------------------ ------------------------------
{
"Icon": "el-icon-tickets",
"Id": 374792687640581,
"Name": "log",
"Path": "/log",
"Sort": 97,
"Title": "日志管理",
"Type": 1
},
{
"Component": "sys/log/operation",
"Icon": "el-icon-pointer",
"Id": 485285246504976,
"Name": "sys/log/operation",
"ParentId": 374792687640581,
"Path": "/sys/log/operation",
"Sort": 100,
"Title": "操作日志",
"Type": 1,
},
{
"Component": "sys/log/login",
"Icon": "sc-icon-OpenDoor",
"Id": 485285246504970,
"Name": "sys/log/login",
"ParentId": 374792687640581,
"Path": "/sys/log/login",
"Sort": 99,
"Title": "登录日志",
"Type": 1,
},
// ------------------------------ ------------------------------
{ {
"Icon": "sc-icon-code", "Icon": "sc-icon-code",
"Id": 373838105399301, "Id": 373838105399301,
"Name": "dev", "Name": "dev",
"Path": "/dev", "Path": "/dev",
"Sort": 97, "Sort": 96,
"Title": "开发管理", "Title": "开发管理",
"Type": 1 "Type": 1
}, },
@ -152,7 +207,7 @@
"Component": "dev/code", "Component": "dev/code",
"Icon": "sc-icon-code2", "Icon": "sc-icon-code2",
"Id": 373838147022853, "Id": 373838147022853,
"Name": "dev-code", "Name": "dev/code",
"ParentId": 373838105399301, "ParentId": 373838105399301,
"Path": "/dev/code", "Path": "/dev/code",
"Sort": 100, "Sort": 100,
@ -163,10 +218,20 @@
"Id": 482777529417739, "Id": 482777529417739,
"ParentId": 373838105399301, "ParentId": 373838105399301,
"Icon": "el-icon-eleme-filled", "Icon": "el-icon-eleme-filled",
"Name": "dev-element", "Name": "dev/element",
"Path": "https://element-plus.gitee.io/zh-CN/component/button.html", "Path": "https://element-plus.org/zh-CN/component/overview.html",
"Sort": 100, "Sort": 99,
"Title": "Element", "Title": "Element",
"Type": 3, "Type": 3,
},
{
"Id": 560217289232398,
"ParentId": 373838105399301,
"Icon": "sc-icon-FreeSql",
"Name": "dev/freesql",
"Path": "https://freesql.net/guide",
"Sort": 99,
"Title": "FreeSql",
"Type": 3,
} }
] ]

View File

@ -1,15 +1,15 @@
[ [
{ {
"DataScope": 1, "DataScope": 1,
"DisplayDashboard": true,
"Enabled": true, "Enabled": true,
"Id": 370943613149253, "Id": 370943613149253,
"IgnorePermissionControl": true, "IgnorePermissionControl": true,
"DisplayDashboard": true,
"Name": "超级管理员", "Name": "超级管理员",
"Sort": 100 "Sort": 100
}, },
{ {
"DataScope": 1, "DataScope": 4,
"Enabled": true, "Enabled": true,
"Id": 371729946431493, "Id": 371729946431493,
"Name": "普通用户", "Name": "普通用户",

View File

@ -16,7 +16,47 @@
"RoleId": 371729946431493 "RoleId": 371729946431493
}, },
{ {
"ApiId": "api/biz/member/member.info", "ApiId": "api/sys/site.msg/unread.count",
"RoleId": 371729946431493 "RoleId": 371729946431493,
},
{
"ApiId": "api/sys/site.msg",
"RoleId": 371729946431493,
},
{
"ApiId": "api/sys/site.msg/get.mine",
"RoleId": 371729946431493,
},
{
"ApiId": "api/sys/site.msg/paged.query.mine",
"RoleId": 371729946431493,
},
{
"ApiId": "api/sys/site.msg/set.site.msg.status",
"RoleId": 371729946431493,
},
{
"ApiId": "api/sys/user/get.session.user.app.config",
"RoleId": 371729946431493,
},
{
"ApiId": "api/sys/user/set.session.user.app.config",
"RoleId": 371729946431493,
},
{
"ApiId": "api/sys/login.log/paged.query",
"RoleId": 371729946431493,
},
{
"ApiId": "api/sys/login.log/get",
"RoleId": 371729946431493,
},
{
"ApiId": "api/sys/login.log/count.by",
"RoleId": 371729946431493,
},
{
"ApiId": "api/sys/login.log/export",
"RoleId": 371729946431493,
} }
] ]

View File

@ -1,11 +1,9 @@
[ [
{ {
"Id": 396423792566281,
"MenuId": 373837717815301, "MenuId": 373837717815301,
"RoleId": 371729946431493 "RoleId": 371729946431493
}, },
{ {
"Id": 396423792566282,
"MenuId": 374967228141573, "MenuId": 374967228141573,
"RoleId": 371729946431493 "RoleId": 371729946431493
} }

View File

@ -1,10 +1,10 @@
[ [
{ {
"Content": "<p>尊敬的用户:</p>\n<p style=\"padding-left: 40px;\">欢迎您使用 NetAdmin 后台管理系统NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#12/.NET8、Vue3/Vite、Element Plus 等现代技术构建,具有十分整洁、优雅的编码规范。</p>\n<p style=\"padding-left: 40px;\">NetAdmin 致力于为企业提供高效、安全、易用的解决方案,帮助您快速构建出符合业务需求的应用程序。系统提供了丰富的功能模块,包括用户管理、权限管理、日志管理、文件上传等,可以满足您日常管理的需求。</p>\n<p style=\"padding-left: 40px;\">在使用 NetAdmin 的过程中,我们真诚地希望您能够遵守以下规定:</p>\n<p style=\"padding-left: 80px;\">1. 不得利用 NetAdmin 进行非法活动或者侵犯他人权益;</p>\n<p style=\"padding-left: 80px;\">2. 不得对 NetAdmin 系统进行恶意攻击或者破坏;</p>\n<p style=\"padding-left: 80px;\">3. 不得将 NetAdmin 系统的任何部分用于商业目的或者未经授权的访问。</p>\n<p style=\"padding-left: 80px;\">4. 为了更好地为您提供服务NetAdmin 将不断进行优化和升级,同时也欢迎您提出宝贵的意见和建议。如果您在使用过程中遇到任何问题,可以通过官方网站或者技术支持团队进行咨询和解决。</p>\n<p style=\"padding-left: 40px;\">再次感谢您对 NetAdmin 的信任和支持我们相信在您的使用过程中NetAdmin 一定会成为您的得力助手,为您的事业发展提供强有力的支持!</p>\n<p style=\"text-align: right;\">NetAdmin 开发团队</p>", "Content": "<p>尊敬的用户:</p>\n<p style=\"padding-left: 40px;\">欢迎您使用 NetAdmin 后台管理系统NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#13/.NET9、Vue3/Vite、ElementPlus 等现代技术构建,具有十分整洁、优雅的编码规范。</p>\n<p style=\"padding-left: 40px;\">NetAdmin 致力于为企业提供高效、安全、易用的解决方案,帮助您快速构建出符合业务需求的应用程序。系统提供了丰富的功能模块,包括用户管理、权限管理、日志管理、文件上传等,可以满足您日常管理的需求。</p>\n<p style=\"padding-left: 40px;\">在使用 NetAdmin 的过程中,我们真诚地希望您能够遵守以下规定:</p>\n<p style=\"padding-left: 80px;\">1. 不得利用 NetAdmin 进行非法活动或者侵犯他人权益;</p>\n<p style=\"padding-left: 80px;\">2. 不得对 NetAdmin 系统进行恶意攻击或者破坏;</p>\n<p style=\"padding-left: 80px;\">3. 不得将 NetAdmin 系统的任何部分用于商业目的或者未经授权的访问。</p>\n<p style=\"padding-left: 80px;\">4. 为了更好地为您提供服务NetAdmin 将不断进行优化和升级,同时也欢迎您提出宝贵的意见和建议。如果您在使用过程中遇到任何问题,可以通过官方网站或者技术支持团队进行咨询和解决。</p>\n<p style=\"padding-left: 40px;\">再次感谢您对 NetAdmin 的信任和支持我们相信在您的使用过程中NetAdmin 一定会成为您的得力助手,为您的事业发展提供强有力的支持!</p>\n<p style=\"text-align: right;\">NetAdmin 开发团队</p>",
"MsgType": 2,
"Summary": "尊敬的用户:\n欢迎您使用 NetAdmin 后台管理系统NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#12/.NET8、Vue3/Vite、Element Plus 等现代",
"Title": "欢迎使用 NetAdmin 后台管理系统",
"CreatedUserId": 370942943322181, "CreatedUserId": 370942943322181,
"CreatedUserName": "root", "CreatedUserName": "root",
"MsgType": 2,
"Summary": "尊敬的用户:\n欢迎您使用 NetAdmin 后台管理系统NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#13/.NET9、Vue3/Vite、ElementPlus 等现代",
"Title": "欢迎使用 NetAdmin 后台管理系统",
} }
] ]

View File

@ -6,5 +6,13 @@
"Password": "A8E87D23-49BC-25A1-1C7C-59186BEF5D15", "Password": "A8E87D23-49BC-25A1-1C7C-59186BEF5D15",
"Token": "A9AFD92E-A33D-4152-9A6C-A9C141D24887", "Token": "A9AFD92E-A33D-4152-9A6C-A9C141D24887",
"UserName": "root" "UserName": "root"
},
{
"DeptId": 372119301627909,
"Enabled": true,
"Id": 560217289236492,
"Password": "A8E87D23-49BC-25A1-1C7C-59186BEF5D15",
"Token": "4208EA97-B32F-4E39-A290-4C0D27B61EBF",
"UserName": "user"
} }
] ]

View File

@ -1,5 +1,10 @@
[ [
{ {
"Id": 370942943322181 "Id": 370942943322181,
"AppConfig": "[]"
},
{
"Id": 560217289236492,
"AppConfig": "[]"
} }
] ]

View File

@ -2,5 +2,9 @@
{ {
"RoleId": 370943613149253, "RoleId": 370943613149253,
"UserId": 370942943322181 "UserId": 370942943322181
},
{
"RoleId": 371729946431493,
"UserId": 560217289236492
} }
] ]

View File

@ -1,49 +0,0 @@
var target = Argument("target", "Default");
var configuration = Argument("configuration", "Release");
var outputDirectory = Argument("output-directory", "./dist/backend/publish");
////////////////////////////////////////////////////////////////
// Tasks
Task("Clean")
.Does(context =>
{
context.CleanDirectory("./dist");
});
Task("Build")
.IsDependentOn("Clean")
.Does(context =>
{
DotNetBuild("./NetAdmin.sln", new DotNetBuildSettings {
Configuration = configuration
});
});
Task("Publish-BizServer")
.Does(context =>
{
DotNetPublish("./src/backend/NetAdmin.BizServer.Host/NetAdmin.BizServer.Host.csproj", new DotNetPublishSettings {
NoBuild = true,
Configuration = configuration,
OutputDirectory = new DirectoryPath(outputDirectory)
});
});
Task("Publish-ScheduledService")
.Does(context =>
{
DotNetPublish("./src/backend/NetAdmin.ScheduledService/NetAdmin.ScheduledService.csproj", new DotNetPublishSettings {
NoBuild = true,
Configuration = configuration,
OutputDirectory = new DirectoryPath(outputDirectory)
});
});
Task("Default")
.IsDependentOn("Build");
////////////////////////////////////////////////////////////////
// Execution
RunTarget(target)

View File

@ -1,6 +1,6 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<CodeAnalysisRuleSet>$(SolutionDir)/stylecop.analyzers.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet>$(SolutionDir)/build/stylecop.analyzers.ruleset</CodeAnalysisRuleSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors> <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
@ -11,15 +11,19 @@
<WarningsAsErrors>true</WarningsAsErrors> <WarningsAsErrors>true</WarningsAsErrors>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.507"> <PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Roslynator.Analyzers" Version="4.6.2"> <PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.14.2-alpha">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.12.0.78982"> <PackageReference Include="Roslynator.Analyzers" Version="4.13.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="SonarAnalyzer.CSharp" Version="10.8.0.113526">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>

View File

@ -3,8 +3,8 @@
<ItemGroup> <ItemGroup>
<PackageReferenceFiles <PackageReferenceFiles
Condition="%(PackageReference.CopyToOutputDirectory) != ''" Condition="%(PackageReference.CopyToOutputDirectory) != ''"
Include="$(NugetPackageRoot)\%(PackageReference.Identity)\%(PackageReference.Version)\%(PackageReference.CopyToOutputDirectory)"/> Include="$(NugetPackageRoot)\%(PackageReference.Identity)\%(PackageReference.Version)\%(PackageReference.CopyToOutputDirectory)" />
</ItemGroup> </ItemGroup>
<Copy SourceFiles="@(PackageReferenceFiles)" DestinationFolder="$(OutDir)"/> <Copy SourceFiles="@(PackageReferenceFiles)" DestinationFolder="$(OutDir)" />
</Target> </Target>
</Project> </Project>

12
build/prebuild.targets Normal file
View File

@ -0,0 +1,12 @@
<Project>
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="dotnet tool restore" StdOutEncoding="utf-8" />
<Exec Condition="!Exists('$(SolutionDir)/assets/res/Ln.resx')" WorkingDirectory="$(SolutionDir)/scripts"
Command="dotnet t4 ./gen.resx.tt -o ../assets/res/Ln.resx"
StdOutEncoding="utf-8" />
<Exec Condition="!Exists('$(SolutionDir)/dist/backend/$(ProjectName)/Ln.cs')"
WorkingDirectory="$(SolutionDir)/scripts"
Command="dotnet t4 ./gen.cs.tt -o ../dist/backend/$(ProjectName)/Ln.cs"
StdOutEncoding="utf-8" />
</Target>
</Project>

View File

@ -1,6 +0,0 @@
$refs = ('https://github.com/nsnail/ns-ext.git', 'https://github.com/nsnail/Furion.git', 'https://github.com/nsnail/FreeSql.git')
foreach ($item in $refs)
{
git clone --depth 1 --config "http.proxy=http://127.0.0.1:1081" $item "./refs/$( [regex]::Match($item, '/([^/]+)\.git$').Groups[1] )"
}

View File

@ -1,7 +0,0 @@
$files = $( foreach ($line in $( git diff head origin/dev --stat-width 200 ) | findstr '\|')
{
$line.split('\|')[0].trim()
} ) -join ';'
echo $files
dotnet jb cleanupcode --no-build --include = "$files" ./NetAdmin.sln
dotnet script ./PushSign.csx

View File

@ -1 +0,0 @@
dotnet jb cleanupcode --no-build ./NetAdmin.sln

1
docker/README.md Normal file
View File

@ -0,0 +1 @@
docker

View File

@ -0,0 +1,29 @@
import { defineConfig } from 'vitepress'
// https://vitepress.dev/reference/site-config
export default defineConfig({
base: "/netadmin/",
title: "NetAdmin",
description: "管理后台快速开发框架",
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: [
{ text: 'Home', link: '/' },
{ text: 'Examples', link: '/markdown-examples' }
],
sidebar: [
{
text: 'Examples',
items: [
{ text: 'Markdown Examples', link: '/markdown-examples' },
{ text: 'Runtime API Examples', link: '/api-examples' }
]
}
],
socialLinks: [
{ icon: 'github', link: 'https://github.com/nsnail/netadmin' }
]
}
})

View File

@ -0,0 +1,49 @@
---
outline: deep
---
# Runtime API Examples
This page demonstrates usage of some of the runtime APIs provided by VitePress.
The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files:
```md
<script setup>
import { useData } from 'vitepress'
const { theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>
```
<script setup>
import { useData } from 'vitepress'
const { site, theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>
## More
Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata).

24
docs/manual/docs/index.md Normal file
View File

@ -0,0 +1,24 @@
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home
hero:
name: "NetAdmin"
text: "管理后台快速开发框架"
tagline: 基于C#12/.NET8、Vue3/Vite、Element Plus等现代技术构建具有十分整洁、优雅的编码规范
actions:
- theme: brand
text: 快速开始
link: /markdown-examples
- theme: alt
text: API Examples
link: /api-examples
features:
- title: Feature A
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
- title: Feature B
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
- title: Feature C
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
---

View File

@ -0,0 +1,85 @@
# Markdown Extension Examples
This page demonstrates some of the built-in markdown extensions provided by VitePress.
## Syntax Highlighting
VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting:
**Input**
````
```js{4}
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
```
````
**Output**
```js{4}
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
```
## Custom Containers
**Input**
```md
::: info
This is an info box.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a dangerous warning.
:::
::: details
This is a details block.
:::
```
**Output**
::: info
This is an info box.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a dangerous warning.
:::
::: details
This is a details block.
:::
## More
Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown).

10
docs/manual/package.json Normal file
View File

@ -0,0 +1,10 @@
{
"scripts": {
"docs:dev": "vitepress dev docs",
"docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs"
},
"devDependencies": {
"vitepress": "^1.0.0-rc.27"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1,4 +0,0 @@
call npm --prefix ./src/frontend/admin run prettier
dot rbom -w -e refs -e .git -e node_modules
dot trim -w -e refs -e .git -e node_modules
dot tolf -w -e refs -e .git -e node_modules

View File

@ -3,34 +3,10 @@
"isRoot": true, "isRoot": true,
"tools": { "tools": {
"dotnet-t4": { "dotnet-t4": {
"version": "2.3.1", "version": "3.0.0",
"commands": [ "commands": [
"t4" "t4"
] ]
},
"cake.tool": {
"version": "3.2.0",
"commands": [
"dotnet-cake"
]
},
"dotnet-script": {
"version": "1.4.0",
"commands": [
"dotnet-script"
]
},
"jetbrains.resharper.globaltools": {
"version": "2023.2.3",
"commands": [
"jb"
]
},
"dnt": {
"version": "1.8.3",
"commands": [
"dnt"
]
} }
} }
} }

View File

@ -1,2 +0,0 @@
dotnet t4 ./gen.resx.tt -o ./assets/res/Ln.resx
dotnet t4 ./gen.cs.tt -o ./dist/backend/NetAdmin.Infrastructure/Ln.cs

View File

@ -1,10 +1,10 @@
{ {
"sdk": { "sdk": {
"version": "8.0.0", "version": "9.0.0",
"rollForward": "latestMajor", "rollForward": "latestMajor",
"allowPrerelease": true "allowPrerelease": true
}, },
"tools": { "tools": {
"dotnet": "8.0.0" "dotnet": "9.0.0"
} }
} }

View File

@ -1,2 +0,0 @@
dotnet new uninstall .
dotnet new --install .

View File

@ -2,7 +2,6 @@
<configuration> <configuration>
<packageSources> <packageSources>
<clear/> <add key="nuget.cdn.azure.cn" value="https://nuget.cdn.azure.cn/v3/index.json" />
<add key="nuget.cdn.azure.cn" value="https://nuget.cdn.azure.cn/v3/index.json"/>
</packageSources> </packageSources>
</configuration> </configuration>

View File

@ -1,14 +1,14 @@
{ {
"version": "1.0.0", "version": "2.3.1",
"devDependencies": { "devDependencies": {
"cz-git": "^1.7.1", "cz-git": "^1.11.1",
"commitizen": "^4.3.0", "commitizen": "^4.3.1",
"prettier": "^3.1.0", "prettier": "^3.5.3",
"standard-version": "9.5.0" "standard-version": "^9.5.0"
}, },
"config": { "config": {
"commitizen": { "commitizen": {
"path": "node_modules/cz-git" "path": "node_modules/cz-git"
} }
} }
} }

View File

@ -1,24 +0,0 @@
<Project>
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="dotnet tool restore" StdOutEncoding="utf-8"/>
<Exec Condition="!Exists('$(SolutionDir)/assets/res/Ln.resx')" WorkingDirectory="$(SolutionDir)"
Command="dotnet t4 $(SolutionDir)/gen.resx.tt -o $(SolutionDir)/assets/res/Ln.resx"
StdOutEncoding="utf-8"/>
<Exec Condition="!Exists('$(SolutionDir)/dist/backend/$(ProjectName)/Ln.cs')"
WorkingDirectory="$(SolutionDir)"
Command="dotnet t4 $(SolutionDir)/gen.cs.tt -o $(SolutionDir)/dist/backend/$(ProjectName)/Ln.cs"
StdOutEncoding="utf-8"/>
</Target>
<ItemGroup>
<None Include="$(SolutionDir)/assets/res/Ln.txt">
<Link>Languages/Ln.txt</Link>
</None>
<EmbeddedResource Include="$(SolutionDir)/assets/res/Ln.resx">
<Link>Languages/Ln.resx</Link>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
<Compile Include="$(SolutionDir)/dist/backend/$(ProjectName)/Ln.Designer.cs">
<Link>Languages/Ln.Designer.cs</Link>
</Compile>
</ItemGroup>
</Project>

1
refs/Gurion Submodule

@ -0,0 +1 @@
Subproject commit b16b1a35559281a9f53d6914f1195a204c9b4185

1
refs/NetAdmin.FreeSql Submodule

@ -0,0 +1 @@
Subproject commit 15717df4499d284ec77c624a281c199a29280a4e

1
refs/ns-ext Submodule

@ -0,0 +1 @@
Subproject commit 322cbc32df1363755d4b0588923ee7324676c3b6

View File

@ -1,10 +1,17 @@
#!/usr/bin/env pwsh
$branch = $( git branch --show-current ) $branch = $( git branch --show-current )
./dot.clean.cmd git add ../
git add . $skipFormat = Read-Host "输入 n 跳过代码整理"
./node_modules/.bin/git-cz.ps1 if ($skipFormat -ne "n")
{
./code.clean.ps1
}
git add ../
../node_modules/.bin/git-cz.ps1
git pull git pull
git push --set-upstream origin $branch git push --set-upstream origin $branch
Start-Process -FilePath "https://github.com/nsnail/NetAdmin/compare/main...$branch" Start-Process -FilePath "https://github.com/nsnail/NetAdmin/compare/main...$branch"
Write-Host "按『Enter』重建分支『Ctrl+C』退出" Write-Host "按『Enter』重建分支『Ctrl+C』退出"
Pause Pause
./git.rc.ps1 ./3.git.recreate.branch.ps1

31
scripts/2.git.release.ps1 Normal file
View File

@ -0,0 +1,31 @@
#!/usr/bin/env pwsh
cd ..
$types = @{
'1' = @('major', '主版本')
'2' = @('minor', '次版本')
'3' = @('patch', '修订版本')
}
$prefix = ''
while ($null -eq $types[$prefix])
{
$prefix = Read-Host "请选择版本类型`n" $( & { param($i) $i | ForEach-Object { "$_ : $( $types[$_][0] )$( $types[$_][1] )`n" } } $types.Keys | Sort-Object )
}
git checkout main
git pull
git branch -D release
git checkout -b release
./node_modules/.bin/standard-version -r $types[$prefix][0]
git commit --amend --no-edit -a
$tag = $( git describe --tags $( git rev-list --tags --max-count = 1 ) )
git tag -d $tag
git tag $tag
git push --tags origin release
Start-Process -FilePath "https://github.com/nsnail/NetAdmin/compare/main...release"
Write-Host "按『Enter』回到tk分支『Ctrl+C』退出"
Pause
git checkout main
git pull
git branch -D release
git branch -D tk
git checkout -b tk

View File

@ -1,3 +1,5 @@
#!/usr/bin/env pwsh
$branch = $( git branch --show-current ) $branch = $( git branch --show-current )
git checkout main git checkout main
git pull git pull

View File

@ -0,0 +1,4 @@
#!/usr/bin/env pwsh
git push origin :refs/tags/$(git tag -l "*-*")
git tag -d $(git tag -l "*-*")

View File

@ -0,0 +1,5 @@
#!/usr/bin/env pwsh
git submodule update --progress --init --recursive --force --remote -- "../refs/Gurion"
git submodule update --progress --init --recursive --force --remote -- "../refs/NetAdmin.FreeSql"
git submodule update --progress --init --recursive --force --remote -- "../refs/ns-ext"

26
scripts/clean.ln.csx Normal file
View File

@ -0,0 +1,26 @@
using System.Text.RegularExpressions;
var csFiles = Directory.EnumerateFiles(@"../src/backend", $"*.cs", new EnumerationOptions { RecurseSubdirectories = true });
foreach (var lnFile in Directory.EnumerateFiles("../assets/res", "*.ln"))
{
var newLines = new List<string>();
foreach (var line in File.ReadAllLines(lnFile))
{
var found = false;
foreach (var csFile in csFiles)
{
if (File.ReadAllText(csFile).Contains($"Ln.{(Regex.IsMatch(line, @"^\d") ? "_" : "") + line}"))
{
found = true;
newLines.Add(line);
break;
}
}
if (!found)
{
Console.WriteLine(line);
}
}
File.WriteAllLines(lnFile, newLines);
}

View File

@ -18,7 +18,7 @@ using System.Net.Http.Json;
{ {
CreateNoWindow = true, CreateNoWindow = true,
FileName = "dotnet", FileName = "dotnet",
Arguments = $"jb cleanupcode --include=\"{files}\" --no-build ./NetAdmin.sln", Arguments = $"jb cleanupcode --include=\"{files}\" --no-build ../NetAdmin.slnx",
UseShellExecute = false, UseShellExecute = false,
RedirectStandardOutput = true RedirectStandardOutput = true
} }

7
scripts/code.clean.ps1 Normal file
View File

@ -0,0 +1,7 @@
#!/usr/bin/env pwsh
npm --prefix ../src/frontend/admin run prettier
jb cleanupcode --no-build --include=$( $( git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") } ) -join ";" ) ../NetAdmin.slnx
dot rbom -w -e refs -e .git -e node_modules ../
dot trim -w -e refs -e .git -e node_modules ../
dot tolf -w -e refs -e .git -e node_modules ../

View File

@ -0,0 +1,15 @@
using System.Text.RegularExpressions;
Console.WriteLine(string.Join(Environment.NewLine
, Regex
.Matches(File.ReadAllText(@"../assets/res/Ln.resx")
, "data name=\"(.*?)\"")
.Select(x => x.Groups[1].Value)
.Where(x => !Directory
.GetFiles(@"../src/backend/", "*.cs"
, new EnumerationOptions {
RecurseSubdirectories = true
})
.Select(File.ReadAllText)
.Any(y => y.Contains(x)))));
Console.ReadKey();

View File

@ -63,7 +63,7 @@ public sealed class Ln
public static CultureInfo Culture { get; set; } public static CultureInfo Culture { get; set; }
<# <#
var xml = new XmlDocument(); var xml = new XmlDocument();
xml.Load("./assets/res/Ln.resx"); xml.Load("../assets/res/Ln.resx");
foreach (XmlNode data in xml.SelectNodes("//root/data")!) foreach (XmlNode data in xml.SelectNodes("//root/data")!)
{ {
#> #>

2
scripts/gen.ln.cmd Normal file
View File

@ -0,0 +1,2 @@
dotnet t4 ./gen.resx.tt -o ../assets/res/Ln.resx
dotnet t4 ./gen.cs.tt -o ../dist/backend/NetAdmin.Infrastructure/Ln.cs

Some files were not shown because too many files have changed in this diff Show More