mirror of
https://github.com/nsnail/NetAdmin.git
synced 2025-08-02 18:17:31 +08:00
Compare commits
152 Commits
Author | SHA1 | Date | |
---|---|---|---|
c68f695555 | |||
587b22014d | |||
2f300285aa | |||
1743f4ff28 | |||
7fc5fca5d9 | |||
d8dbb28cfc | |||
27aafacd54 | |||
e6ce5afd99 | |||
d1503a859b | |||
26e3698f57 | |||
3069b8fbc4 | |||
4d63bd6bf5 | |||
f00046265a | |||
0848c8b7e5 | |||
8479f69bdc | |||
a454f2ab2d | |||
3293683835 | |||
e71661663f | |||
13ba536df2 | |||
072cc1e491 | |||
6fbb519256 | |||
a4e63c971d | |||
bac4a39544 | |||
f0c3ec109f | |||
000e3d68a8 | |||
58e4572723 | |||
dfe6b03b21 | |||
135f082b06 | |||
c088492cfa | |||
b9b228c9e1 | |||
779d8e511a | |||
6922a863ec | |||
5b69ce8688 | |||
cd8ed674e0 | |||
4733adede5 | |||
e00c30c961 | |||
6b63250039 | |||
2fa8b56f9c | |||
2b4c25c07c | |||
7c56c8d571 | |||
5fb6f7bea7 | |||
e48b425121 | |||
faaf5aa0fc | |||
e1bea2ec31 | |||
33e60a5bd7 | |||
1a28e8d5a6 | |||
60ec6ea2c1 | |||
6d4ccf3445 | |||
1733802e02 | |||
aaea28389a | |||
be5b9a160d | |||
67eaa5b783 | |||
8b01112f42 | |||
d6a479b693 | |||
e1b0030193 | |||
beba4124b0 | |||
8a29640aeb | |||
8bc8aa960c | |||
d00f0d2d9c | |||
1442e0a37c | |||
6100e9e9c8 | |||
ae2d1c4932 | |||
366a26a5cd | |||
8b53f66331 | |||
705d027da4 | |||
a3ab97019d | |||
608a1ded5c | |||
366ca0d237 | |||
56b111b1cf | |||
f5bd69ef60 | |||
ddf891e3bc | |||
7ae473d492 | |||
c20a6c369d | |||
57b71e1354 | |||
127f6e9f6c | |||
d1951dbcb5 | |||
5edcf63e24 | |||
b01b8b24ba | |||
d9c7085472 | |||
a01acddb9c | |||
e5208cd751 | |||
dc326c324c | |||
e0d15f8039 | |||
169ab08b88 | |||
3b8336105a | |||
7214a22ea5 | |||
3152a8d3e8 | |||
40e8eff5f3 | |||
47e67dd503 | |||
903ea1820a | |||
c08ea62064 | |||
4860299959 | |||
72f9d1a3ec | |||
98718a010c | |||
adfc8a7c74 | |||
427057b42d | |||
823efd4044 | |||
e43439a118 | |||
be047540fe | |||
55594b72c2 | |||
a330495624 | |||
fc40170009 | |||
59c85cef21 | |||
d83cab1c3e | |||
f005da8db3 | |||
6bd6e62fb6 | |||
149e1afa53 | |||
8f69c2907b | |||
a5b47c8d6b | |||
3847d6fdbb | |||
1dc953a2b2 | |||
d052e43b86 | |||
c117ddfe7a | |||
a37acc4b55 | |||
8fee14cd6e | |||
802251e423 | |||
5fe73878a2 | |||
bde9fb1ea2 | |||
6c2d1676e4 | |||
ad3eab929d | |||
6f89015198 | |||
6f32acaacf | |||
8293ec0297 | |||
473b0c26f2 | |||
339a15e024 | |||
6615df3399 | |||
35411b8c38 | |||
9a8b159c81 | |||
10ff917799 | |||
db6630afb8 | |||
027803e451 | |||
05ed3d3746 | |||
22628e79ca | |||
52ddf273c8 | |||
96e7e3384f | |||
ee93e9c0a4 | |||
fe41974ed6 | |||
3e6b8e6c35 | |||
904df511b9 | |||
0059052b87 | |||
3376fbbdfa | |||
bebddb3558 | |||
0049536d2e | |||
9134c4fe01 | |||
20195e7eaf | |||
b4b4f23968 | |||
36c20b813d | |||
b6bbd8dc88 | |||
ec698ce4db | |||
0986a15039 | |||
cb052577af | |||
4aef7cb307 |
@ -64,7 +64,7 @@ module.exports = {
|
||||
maxSubjectLength: Infinity,
|
||||
minSubjectLength: 0,
|
||||
scopeOverrides: undefined,
|
||||
defaultBody: '',
|
||||
defaultBody: '[skip ci]',
|
||||
defaultIssues: '',
|
||||
defaultScope: '',
|
||||
defaultSubject: ''
|
||||
|
115
.editorconfig
115
.editorconfig
@ -1,78 +1,59 @@
|
||||
# 此文件为 EditorConfig 配置文件,用于设置跨编辑器的代码格式化规则。
|
||||
# root = true 表示此文件是根配置文件。
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
ij_xml_attribute_wrap = off
|
||||
ij_xml_text_wrap = off
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
insert_final_newline = false
|
||||
trim_trailing_whitespace = true
|
||||
charset = utf-8 # 文件字符集为 UTF-8
|
||||
end_of_line = lf # 行结束符为 LF
|
||||
ij_xml_attribute_wrap = off # IntelliJ IDEA 中 XML 属性不换行
|
||||
ij_xml_text_wrap = off # IntelliJ IDEA 中 XML 文本不换行
|
||||
indent_size = 4 # 缩进大小为 4 个空格
|
||||
indent_style = space # 使用空格进行缩进
|
||||
insert_final_newline = false # 不在文件末尾插入空行
|
||||
max_line_length = 150 # 行长度限制为 150 个字符
|
||||
trim_trailing_whitespace = true # 删除行尾的空格
|
||||
|
||||
[{*.json,*.yml}]
|
||||
indent_size = 2
|
||||
indent_size = 2 # 对于 JSON 和 YAML 文件,缩进大小为 2 个空格
|
||||
|
||||
[*.cs]
|
||||
dotnet_analyzer_diagnostic.severity = 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
|
||||
|
||||
dotnet_analyzer_diagnostic.severity = warning # 设置 C# 文件中所有 dotnet_analyzer_diagnostic 的严重性级别为 warning
|
||||
|
||||
# ReSharper properties
|
||||
resharper_align_linq_query = true
|
||||
resharper_align_multiline_argument = true
|
||||
resharper_align_multiline_array_and_object_initializer = true
|
||||
resharper_align_multiline_binary_patterns = true
|
||||
resharper_align_multiline_calls_chain = true
|
||||
resharper_align_multiline_extends_list = true
|
||||
resharper_align_multiline_parameter = true
|
||||
resharper_align_multiline_property_pattern = true
|
||||
resharper_align_multiline_switch_expression = true
|
||||
resharper_align_multiple_declaration = true
|
||||
resharper_align_multline_type_parameter_constrains = true
|
||||
resharper_align_multline_type_parameter_list = true
|
||||
resharper_align_tuple_components = true
|
||||
resharper_allow_comment_after_lbrace = true
|
||||
resharper_blank_lines_before_single_line_comment = 1
|
||||
resharper_csharp_empty_block_style = together_same_line
|
||||
resharper_csharp_outdent_commas = true
|
||||
resharper_csharp_place_type_constraints_on_same_line = false
|
||||
resharper_csharp_stick_comment = false
|
||||
resharper_csharp_wrap_before_comma = true
|
||||
resharper_indent_nested_for_stmt = true
|
||||
resharper_indent_nested_foreach_stmt = true
|
||||
resharper_indent_nested_while_stmt = true
|
||||
resharper_indent_preprocessor_if = usual_indent
|
||||
resharper_indent_preprocessor_other = usual_indent
|
||||
resharper_int_align = true
|
||||
resharper_keep_existing_arrangement = false
|
||||
resharper_place_linq_into_on_new_line = false
|
||||
resharper_place_simple_embedded_statement_on_same_line = false
|
||||
resharper_place_simple_switch_expression_on_single_line = true
|
||||
resharper_wrap_before_eq = true
|
||||
resharper_wrap_chained_method_calls = chop_if_long
|
||||
resharper_wrap_switch_expression = chop_if_long
|
||||
|
||||
resharper_align_linq_query = true # 启用对LINQ查询的对齐
|
||||
resharper_align_multiline_argument = true # 启用多行参数的对齐
|
||||
resharper_align_multiline_array_and_object_initializer = true # 启用多行数组和对象初始化器的对齐
|
||||
resharper_align_multiline_binary_patterns = true # 启用多行二元模式的对齐
|
||||
resharper_align_multiline_calls_chain = true # 启用多行调用链的对齐
|
||||
resharper_align_multiline_extends_list = true # 启用多行扩展列表的对齐
|
||||
resharper_align_multiline_parameter = true # 启用多行参数的对齐
|
||||
resharper_align_multiline_property_pattern = true # 启用多行属性模式的对齐
|
||||
resharper_align_multiline_switch_expression = true # 启用多行切换表达式的对齐
|
||||
resharper_align_multiple_declaration = true # 启用多个声明的对齐
|
||||
resharper_align_multline_type_parameter_constrains = true # 启用多行类型参数约束的对齐
|
||||
resharper_align_multline_type_parameter_list = true # 启用多行类型参数列表的对齐
|
||||
resharper_align_tuple_components = true # 启用元组组件的对齐
|
||||
resharper_allow_comment_after_lbrace = true # 允许在大括号前添加注释
|
||||
resharper_blank_lines_before_single_line_comment = 1 # 在单行注释前添加空行
|
||||
resharper_csharp_empty_block_style = together_same_line # 设置空块的样式为“在一起,在同一行”
|
||||
resharper_csharp_outdent_commas = true # 是否将逗号后的代码退缩
|
||||
resharper_csharp_place_type_constraints_on_same_line = false # 在类型约束上是否保持在同一行
|
||||
resharper_csharp_stick_comment = false # 是否将注释粘贴在代码行的末尾
|
||||
resharper_csharp_wrap_before_comma = true # 在逗号前是否添加换行
|
||||
resharper_indent_nested_for_stmt = true # 是否对嵌套的for语句进行缩进
|
||||
resharper_indent_nested_foreach_stmt = true # 是否对嵌套的foreach语句进行缩进
|
||||
resharper_indent_nested_while_stmt = true # 是否对嵌套的while语句进行缩进
|
||||
resharper_indent_preprocessor_if = usual_indent # 设置预处理器指令`if`的缩进方式
|
||||
resharper_indent_preprocessor_other = usual_indent # 设置其他预处理器指令的缩进方式
|
||||
resharper_int_align = true # 启用整数对齐
|
||||
resharper_keep_existing_arrangement = false # 在重新排列时是否保留现有的布局
|
||||
resharper_place_linq_into_on_new_line = false # 是否将LINQ表达式放在新行
|
||||
resharper_place_simple_embedded_statement_on_same_line = false # 是否将简单的嵌入式语句放在同一行
|
||||
resharper_place_simple_switch_expression_on_single_line = true # 是否将简单的切换表达式放在单行
|
||||
resharper_wrap_before_eq = true # 在等号前是否添加换行
|
||||
resharper_wrap_chained_method_calls = chop_if_long # 是否拆分链式方法调用
|
||||
resharper_wrap_switch_expression = chop_if_long # 是否拆分切换表达式
|
||||
|
||||
# Microsoft .NET properties
|
||||
csharp_indent_braces = false
|
||||
csharp_new_line_before_open_brace = local_functions, methods, types
|
||||
csharp_indent_braces = false # 设置为false表示花括号不跟随代码行缩进
|
||||
csharp_new_line_before_open_brace = local_functions, methods, types # 这里设置为local_functions, methods, types,表示在局部函数、方法和类型定义的开放花括号前应换行
|
1
.github/workflows/README.md
vendored
Normal file
1
.github/workflows/README.md
vendored
Normal file
@ -0,0 +1 @@
|
||||
github workflows
|
@ -1,7 +1,7 @@
|
||||
# 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: CI
|
||||
name: nightly-build
|
||||
|
||||
on:
|
||||
push:
|
||||
@ -12,11 +12,13 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [ 20.x ]
|
||||
node-version: [ 22.x ]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@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
|
||||
@ -25,28 +27,21 @@ jobs:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-npm-${{ hashFiles('./src/frontend/admin/package.json') }}
|
||||
restore-keys: ${{ runner.os }}-npm
|
||||
- name: Publish frontend
|
||||
working-directory: ./src/frontend/admin
|
||||
run:
|
||||
npm install && npm run build
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v3
|
||||
- working-directory: ./src/frontend/admin
|
||||
run: npm install && npm run build
|
||||
- uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: 8.0.x
|
||||
dotnet-version: 9.0.x
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.nuget/packages
|
||||
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
|
||||
restore-keys: ${{ runner.os }}-nuget
|
||||
- name: Publish backend
|
||||
working-directory: ./src/backend/NetAdmin.BizServer.Host
|
||||
run: dotnet publish NetAdmin.BizServer.Host.csproj -c Release
|
||||
- name: Build docker images
|
||||
run: docker build -t nsnail/netadmin .
|
||||
- name: Docker login
|
||||
uses: docker/login-action@v3
|
||||
- working-directory: ./src/backend/YourSolution.AdmServer.Host
|
||||
run: dotnet publish YourSolution.AdmServer.Host.csproj -c Release
|
||||
- run: docker build -t nsnail/netadmin:nightly .
|
||||
- uses: docker/login-action@v3
|
||||
with:
|
||||
username: "nsnail"
|
||||
password: "${{secrets.DOCKER_PASSWORD}}"
|
||||
- name: Push docker images
|
||||
run: docker push nsnail/netadmin
|
||||
- run: docker push nsnail/netadmin:nightly
|
58
.github/workflows/release.yml
vendored
Normal file
58
.github/workflows/release.yml
vendored
Normal 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: [ 22.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}}
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -397,9 +397,10 @@ FodyWeavers.xsd
|
||||
# JetBrains Rider
|
||||
*.sln.iml
|
||||
.idea/
|
||||
!src/backend/CloudCode.DataGrip/.idea
|
||||
|
||||
# User Define
|
||||
dist/
|
||||
refs/
|
||||
*.[Dd]esigner.cs
|
||||
*.db
|
||||
*.db
|
||||
/assets/res/Ln.resx
|
||||
|
9
.gitmodules
vendored
Normal file
9
.gitmodules
vendored
Normal 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/FreeSql"]
|
||||
path = refs/FreeSql
|
||||
url = https://github.com/nsnail/FreeSql.git
|
@ -1,4 +0,0 @@
|
||||
[hook "startcommit"]
|
||||
cmdline = dot.clean.cmd
|
||||
wait = true
|
||||
show = true
|
137
CHANGELOG.md
137
CHANGELOG.md
@ -2,16 +2,145 @@
|
||||
|
||||
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.1.0](https://github.com/nsnail/NetAdmin/compare/v2.0.0...v2.1.0) (2024-11-15)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* ✨ 基础模块 ([d26e4c7](https://github.com/nsnail/NetAdmin/commit/d26e4c77cc7264829a410f8503e855531f6b9c19))
|
||||
* ✨ 首页仪表板自定义布局 ([#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))
|
||||
|
||||
## 1.0.0 (2023-11-17)
|
||||
|
||||
### 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
|
||||
|
||||
* ✨ 基础模块 ([cd2a241](https://github.com/nsnail/NetAdmin/commit/cd2a2412b91bd07346b1d95b19102d48883479a5))
|
||||
* ✨ 查询过滤器保存 ([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))
|
@ -1,34 +1,37 @@
|
||||
<!-- 注意此文件名大小写不可变更 -->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<DefineConstants>DBTYPE_SQLITE</DefineConstants>
|
||||
<SolutionDir>$(MSBuildThisFileDirectory)</SolutionDir>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(SolutionDir)/minver.targets"/>
|
||||
<Import Project="$(SolutionDir)/build/minver.targets" />
|
||||
<PropertyGroup>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<Authors>nsnail</Authors>
|
||||
<BaseIntermediateOutputPath>$(SolutionDir)/dist/backend/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
|
||||
<BaseOutputPath>$(SolutionDir)/dist/backend/$(MSBuildProjectName)/bin</BaseOutputPath>
|
||||
<Copyright>© 2006-2023 nsnail</Copyright>
|
||||
<Description>一个基于.Net8/Vue3,极致优雅的RBAC通用权限管理模板</Description>
|
||||
<Description>通用后台权限管理系统、快速开发框架(基于C#12/.NET9、Vue3/Vite、Element Plus等现代技术构建,具有十分整洁、优雅的编码规范)</Description>
|
||||
<EnableBaseIntermediateOutputPathMismatchWarning>false</EnableBaseIntermediateOutputPathMismatchWarning>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<LangVersion>preview</LangVersion>
|
||||
<MinVerDefaultPreReleaseIdentifiers>beta</MinVerDefaultPreReleaseIdentifiers>
|
||||
<MinVerTagPrefix>v</MinVerTagPrefix>
|
||||
<NoWarn>CA1707;IDE0005;IDE0008;IDE0010;IDE0028;IDE0055;IDE0160;IDE0300;IDE0305;RCS1141;RCS1142;RCS1181;S101;S1121;S1135;S125;S2094;S3604;S4663;S6561;SYSLIB1045;SA1010</NoWarn>
|
||||
<Product>NetAdmin</Product>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryUrl>http://git.shequnpay.com/lingyun/NetAdmin.git</RepositoryUrl>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RepositoryUrl>https://github.com/nsnail/NetAdmin.git</RepositoryUrl>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<Title>$(AssemblyName)</Title>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MinVer" Version="5.0.0-beta.1">
|
||||
<PackageReference Include="MinVer" Version="6.0.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="../GlobalUsings.cs" Link="GlobalUsings.cs"/>
|
||||
<Compile Include="$(SolutionDir)/src/backend/GlobalUsings.cs" Link="GlobalUsings.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,7 +1,7 @@
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
|
||||
WORKDIR /app
|
||||
EXPOSE 8080
|
||||
RUN apt update
|
||||
RUN apt install -y redis
|
||||
COPY ./dist/backend/NetAdmin.BizServer.Host/bin/Release/net8.0/publish .
|
||||
ENTRYPOINT redis-server --daemonize yes && dotnet NetAdmin.BizServer.Host.dll
|
||||
COPY ./dist/backend/YourSolution.AdmServer.Host/bin/Release/net9.0/publish .
|
||||
ENTRYPOINT redis-server --daemonize yes && dotnet YourSolution.AdmServer.Host.dll -is
|
397
NetAdmin.sln
397
NetAdmin.sln
@ -8,181 +8,240 @@ 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
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.commitlintrc.js = .commitlintrc.js
|
||||
.editorconfig = .editorconfig
|
||||
.gitattributes = .gitattributes
|
||||
.gitignore = .gitignore
|
||||
.gitmodules = .gitmodules
|
||||
CHANGELOG.md = CHANGELOG.md
|
||||
Directory.Build.props = Directory.Build.props
|
||||
Dockerfile = Dockerfile
|
||||
dotnet-tools.json = dotnet-tools.json
|
||||
global.json = global.json
|
||||
LICENSE = LICENSE
|
||||
NetAdmin.sln.DotSettings = NetAdmin.sln.DotSettings
|
||||
nuget.config = nuget.config
|
||||
package.json = package.json
|
||||
README.md = README.md
|
||||
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}"
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{BB0B25C9-0901-4923-913F-00F9A6B352A5}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
1.git.pull.request.ps1 = scripts/1.git.pull.request.ps1
|
||||
2.git.release.ps1 = scripts/2.git.release.ps1
|
||||
3.git.recreate.branch.ps1 = scripts/3.git.recreate.branch.ps1
|
||||
4.git.del.obsolete.tags.ps1 = scripts/4.git.del.obsolete.tags.ps1
|
||||
clean.ln.csx = scripts/clean.ln.csx
|
||||
code.clean.csx = scripts/code.clean.csx
|
||||
code.clean.ps1 = scripts/code.clean.ps1
|
||||
find.unused.ln.csx = scripts/find.unused.ln.csx
|
||||
gen.cs.tt = scripts/gen.cs.tt
|
||||
gen.id.linq = scripts/gen.id.linq
|
||||
gen.ln.cmd = scripts/gen.ln.cmd
|
||||
gen.resx.tt = scripts/gen.resx.tt
|
||||
image.optimize.csx = scripts/image.optimize.csx
|
||||
install.as.tpl.ps1 = scripts/install.as.tpl.ps1
|
||||
rename.csx = scripts/rename.csx
|
||||
resharper.full.ps1 = scripts/resharper.full.ps1
|
||||
switch.nuget.or.project.csx = scripts/switch.nuget.or.project.csx
|
||||
sync.sln.files.csx = scripts/sync.sln.files.csx
|
||||
wait.server.stop.sh = scripts/wait.server.stop.sh
|
||||
EndProjectSection
|
||||
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
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
nightly-build.yml = .github/workflows/nightly-build.yml
|
||||
README.md = .github/workflows/README.md
|
||||
release.yml = .github/workflows/release.yml
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Tests", "src\backend\NetAdmin.Tests\NetAdmin.Tests.csproj", "{00604162-C444-478B-B773-3AB23C856CA7}"
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{8E4C93BA-9493-4892-80C4-5E174C504829}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
code.quality.props = build/code.quality.props
|
||||
copy.pkg.xml.comment.files.targets = build/copy.pkg.xml.comment.files.targets
|
||||
minver.targets = build/minver.targets
|
||||
prebuild.targets = build/prebuild.targets
|
||||
stylecop.analyzers.ruleset = build/stylecop.analyzers.ruleset
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Infrastructure", "src\backend\NetAdmin\NetAdmin.Infrastructure\NetAdmin.Infrastructure.csproj", "{1E62C322-EE42-4699-A6F1-791C53EFA62D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YourSolution.AdmServer.Application", "src\backend\YourSolution.AdmServer.Application\YourSolution.AdmServer.Application.csproj", "{E38B2EB4-D7A5-4777-9236-3B348919DF23}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YourSolution.AdmServer.Host", "src\backend\YourSolution.AdmServer.Host\YourSolution.AdmServer.Host.csproj", "{CE895E44-EEC3-4ECE-A56A-8A82E7D863E3}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03.hosted-servers", "03.hosted-servers", "{12AE5B4B-CB1A-498E-83B8-04E201E31D86}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Domain", "src\backend\NetAdmin\NetAdmin.Domain\NetAdmin.Domain.csproj", "{58509C57-09FA-4E3C-BC07-78E786A2A326}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Application", "src\backend\NetAdmin\NetAdmin.Application\NetAdmin.Application.csproj", "{70C54E1B-2083-4196-AB68-34CAF0075D82}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Host", "src\backend\NetAdmin\NetAdmin.Host\NetAdmin.Host.csproj", "{91839A15-D08F-4848-A301-F793412BC688}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Cache", "src\backend\NetAdmin\NetAdmin.Cache\NetAdmin.Cache.csproj", "{91452C22-4B57-4F16-9AF6-42C7BF830504}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YourSolution.AdmServer.Cache", "src\backend\YourSolution.AdmServer.Cache\YourSolution.AdmServer.Cache.csproj", "{7CB632D3-3635-4F8D-AFE7-F496D37D422B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.SysComponent.Host", "src\backend\NetAdmin\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\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\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}") = "01.frameworks", "01.frameworks", "{D9C3EF66-2757-473D-A26B-54FD08DA203F}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04.tests", "04.tests", "{89260294-80FC-49F1-8D73-AECD39AFF2B7}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "05.tools", "05.tools", "{79409163-5006-405D-AC96-406FA0AD77B7}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "src\backend\UnitTests\UnitTests.csproj", "{C7F27698-DA05-4ACD-B0D7-4791B3972002}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.Tests", "src\backend\NetAdmin\NetAdmin.Tests\NetAdmin.Tests.csproj", "{00604162-C444-478B-B773-3AB23C856CA7}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker", "docker", "{E80A1018-C354-4A26-9029-8847BB9DA864}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
README.md = docker/README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.SysComponent.Domain", "src\backend\NetAdmin\NetAdmin.SysComponent.Domain\NetAdmin.SysComponent.Domain.csproj", "{51D6E603-0749-4A11-A78C-9E5BB127E03A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YourSolution.AdmServer.Domain", "src\backend\YourSolution.AdmServer.Domain\YourSolution.AdmServer.Domain.csproj", "{932520DF-D312-415A-A128-1117F8221D68}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YourSolution.AdmServer.Infrastructure", "src\backend\YourSolution.AdmServer.Infrastructure\YourSolution.AdmServer.Infrastructure.csproj", "{C3DE6F6A-D1FC-4B8E-9033-980FBEBBD2BA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetAdmin.SysComponent.Infrastructure", "src\backend\NetAdmin\NetAdmin.SysComponent.Infrastructure\NetAdmin.SysComponent.Infrastructure.csproj", "{48EE6FC4-B64A-40D3-B889-36837E067880}"
|
||||
EndProject
|
||||
##Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gurion", "refs\Gurion\src\Gurion\Gurion.csproj", "{CCD098FE-4F95-4FA4-8CC0-9A6DE921FBAE}"#refs
|
||||
##EndProject#refs
|
||||
##Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSql", "refs\FreeSql\FreeSql\FreeSql.csproj", "{3C65DA42-877D-46FF-B754-C12214302A29}"#refs
|
||||
##EndProject#refs
|
||||
##Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSql.Provider.Sqlite", "refs\FreeSql\Providers\FreeSql.Provider.Sqlite\FreeSql.Provider.Sqlite.csproj", "{CF5EFA63-4631-4A64-B4F3-98A7DD532F68}"#refs
|
||||
##EndProject#refs
|
||||
##Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSql.DbContext", "refs\FreeSql\FreeSql.DbContext\FreeSql.DbContext.csproj", "{FE03DF27-EC56-48DB-81B0-F99947259A7C}"#refs
|
||||
##EndProject#refs
|
||||
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
|
||||
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
|
||||
{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
|
||||
{51D6E603-0749-4A11-A78C-9E5BB127E03A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{51D6E603-0749-4A11-A78C-9E5BB127E03A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{51D6E603-0749-4A11-A78C-9E5BB127E03A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{51D6E603-0749-4A11-A78C-9E5BB127E03A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{932520DF-D312-415A-A128-1117F8221D68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{932520DF-D312-415A-A128-1117F8221D68}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{932520DF-D312-415A-A128-1117F8221D68}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{932520DF-D312-415A-A128-1117F8221D68}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C3DE6F6A-D1FC-4B8E-9033-980FBEBBD2BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C3DE6F6A-D1FC-4B8E-9033-980FBEBBD2BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C3DE6F6A-D1FC-4B8E-9033-980FBEBBD2BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C3DE6F6A-D1FC-4B8E-9033-980FBEBBD2BA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{48EE6FC4-B64A-40D3-B889-36837E067880}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{48EE6FC4-B64A-40D3-B889-36837E067880}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{48EE6FC4-B64A-40D3-B889-36837E067880}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48EE6FC4-B64A-40D3-B889-36837E067880}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
##{CCD098FE-4F95-4FA4-8CC0-9A6DE921FBAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
##{CCD098FE-4F95-4FA4-8CC0-9A6DE921FBAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
##{CCD098FE-4F95-4FA4-8CC0-9A6DE921FBAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
##{CCD098FE-4F95-4FA4-8CC0-9A6DE921FBAE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
##{3C65DA42-877D-46FF-B754-C12214302A29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
##{3C65DA42-877D-46FF-B754-C12214302A29}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
##{3C65DA42-877D-46FF-B754-C12214302A29}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
##{3C65DA42-877D-46FF-B754-C12214302A29}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
##{CF5EFA63-4631-4A64-B4F3-98A7DD532F68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
##{CF5EFA63-4631-4A64-B4F3-98A7DD532F68}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
##{CF5EFA63-4631-4A64-B4F3-98A7DD532F68}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
##{CF5EFA63-4631-4A64-B4F3-98A7DD532F68}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
##{FE03DF27-EC56-48DB-81B0-F99947259A7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
##{FE03DF27-EC56-48DB-81B0-F99947259A7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
##{FE03DF27-EC56-48DB-81B0-F99947259A7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
##{FE03DF27-EC56-48DB-81B0-F99947259A7C}.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}
|
||||
{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}
|
||||
{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}
|
||||
{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}
|
||||
{79409163-5006-405D-AC96-406FA0AD77B7} = {4DAF9366-855F-46BB-AE4C-660C92FA0697}
|
||||
{51D6E603-0749-4A11-A78C-9E5BB127E03A} = {3F23258D-8299-4992-9F51-2EE9B52CF9D2}
|
||||
{932520DF-D312-415A-A128-1117F8221D68} = {12AE5B4B-CB1A-498E-83B8-04E201E31D86}
|
||||
{C3DE6F6A-D1FC-4B8E-9033-980FBEBBD2BA} = {12AE5B4B-CB1A-498E-83B8-04E201E31D86}
|
||||
{48EE6FC4-B64A-40D3-B889-36837E067880} = {3F23258D-8299-4992-9F51-2EE9B52CF9D2}
|
||||
{3C6F049E-3EE8-4D66-9AFF-E8A369032487} = {1129FE25-466B-4F4F-85FC-3752664245E1}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,35 +1,288 @@
|
||||
<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>
|
||||
<!-- 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/=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>
|
||||
<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"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb_AaBb" /></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>
|
||||
|
||||
<!-- 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/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"><Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /></s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateConstants/@EntryIndexedValue"><Policy Inspect="True" Prefix="_" Suffix="" Style="AA_BB" /></s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticReadonly/@EntryIndexedValue"><Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /></s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=StaticReadonly/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></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"><Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static readonly fields (private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /></Policy></s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=236f7aa5_002D7b06_002D43ca_002Dbf2a_002D9b31bfcff09a/@EntryIndexedValue"><Policy><Descriptor Staticness="Any" AccessRightKinds="Private" Description="Constant fields (private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="_" Suffix="" Style="AA_BB" /></Policy></s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=669e5282_002Dfb4b_002D4e90_002D91e7_002D07d269d04b60/@EntryIndexedValue"><Policy><Descriptor Staticness="Any" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Constant fields (not private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /></Policy></s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=a0b4bc4d_002Dd13b_002D4a37_002Db37e_002Dc9c6864e4302/@EntryIndexedValue"><Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Types and namespaces"><ElementKinds><Kind Name="NAMESPACE" /><Kind Name="CLASS" /><Kind Name="STRUCT" /><Kind Name="ENUM" /><Kind Name="DELEGATE" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb_AaBb" /></Policy></s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=c873eafb_002Dd57f_002D481d_002D8c93_002D77f6863c2f88/@EntryIndexedValue"><Policy><Descriptor Staticness="Static" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Static readonly fields (not private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy></s:String>
|
||||
|
||||
<s:String x:Key="/Default/CodeStyle/CSharpFileLayoutPatterns/Pattern/@EntryValue"><?xml version="1.0" encoding="utf-16"?>
|
||||
<Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns">
|
||||
<TypePattern>
|
||||
@ -70,36 +323,22 @@
|
||||
</Entry>
|
||||
</TypePattern>
|
||||
</Patterns></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>
|
||||
|
||||
<!-- Environment-->
|
||||
<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
136
README.md
@ -1,114 +1,108 @@
|
||||
# NetAdmin
|
||||
|
||||
通用后台权限管理系统、快速开发框架(基于C#12/.NET8、Vue3/Vite、Element Plus等现代技术构建,具有十分整洁、优雅的编码规范)
|
||||
通用后台权限管理系统、快速开发框架(基于C#12/.NET9、Vue3/Vite、Element Plus等现代技术构建,具有十分整洁、优雅的编码规范)
|
||||
|
||||
|
||||
[](https://github.com/nsnail/NetAdmin/actions/workflows/ci.yml)
|
||||
[](https://github.com/nsnail/NetAdmin/actions/workflows/nightly-build.yml)
|
||||
[](https://github.com/nsnail/NetAdmin/blob/main/LICENSE)
|
||||
[](https://github.com/nsnail/NetAdmin/blob/main/LICENSE)
|
||||
[](https://github.com/nsnail/NetAdmin/blob/main/LICENSE)
|
||||
|
||||
## 在线预览
|
||||
|
||||
http://na.yaopy.com
|
||||
https://na.tools92.top
|
||||
|
||||
## 一键运行
|
||||
|
||||
```shell
|
||||
docker run -p 8080:8080 nsnail/netadmin
|
||||
# 需魔法上网
|
||||
```
|
||||
|
||||
## 构建步骤
|
||||
|
||||
- 后端
|
||||
1. 检查dotnet-sdk版本>=8.0.0
|
||||
``` shell
|
||||
dotnet --list-sdks
|
||||
```shell
|
||||
# 1. 检查 dotnet sdk 版本 >=9.0.0
|
||||
dotnet --list-sdks
|
||||
# 下载 dotnet:https://dotnet.microsoft.com/zh-cn/download/dotnet
|
||||
|
||||
# 下载 dotnet https://dotnet.microsoft.com/zh-cn/download/dotnet
|
||||
```
|
||||
2. 克隆代码仓库
|
||||
``` shell
|
||||
git clone https://github.com/nsnail/NetAdmin.git
|
||||
cd ./NetAdmin
|
||||
# 2. 克隆代码仓库
|
||||
git clone https://github.com/nsnail/NetAdmin.git && cd ./NetAdmin
|
||||
|
||||
# 下载 git https://git-scm.com/downloads
|
||||
```
|
||||
3. 确保本机redis处于运行状态
|
||||
``` shell
|
||||
redis-cli
|
||||
# 3. 确认本机 redis 处于运行状态
|
||||
redis-server # 启动
|
||||
redis-cli # 连接测试
|
||||
# 下载 redis for windows:https://github.com/redis-windows/redis-windows/releases
|
||||
# 下载 redis for linux/mac:https://redis.io/download
|
||||
|
||||
# 下载 redis for windows https://github.com/redis-windows/redis-windows/releases
|
||||
# 下载 redis for linux/mac https://redis.io/download
|
||||
```
|
||||
4. 运行后端WebApi
|
||||
``` shell
|
||||
dotnet run --project ./src/backend/NetAdmin.BizServer.Host/NetAdmin.BizServer.Host.csproj --urls http://[::]:5010
|
||||
```
|
||||
5. 体验WebApi程序
|
||||
- 浏览器打开 http://localhost:5010 ,将看到Swagger(Knife4jUI)界面
|
||||
# 4. 运行后端 WebApi
|
||||
dotnet run --project ./src/backend/YourSolution.AdmServer.Host/YourSolution.AdmServer.Host.csproj --urls http://[::]:5010 -is
|
||||
# -i 插入种子数据
|
||||
# -s 同步数据库结构
|
||||
# 浏览器访问 http://localhost:5010 ,将看到Swagger(Knife4jUI)界面
|
||||
|
||||
---
|
||||
# 5. 检查 nodejs 版本 >=20
|
||||
node -v
|
||||
# 下载 nodejs:https://nodejs.org/en/download
|
||||
|
||||
- 前端
|
||||
1. 检查nodejs版本>=20
|
||||
``` shell
|
||||
node -v
|
||||
# 6. 安装 npm 依赖包
|
||||
cd ./src/frontend/admin && npm install
|
||||
|
||||
# 下载 nodejs https://nodejs.org/en/download
|
||||
```
|
||||
2. 安装npm依赖包
|
||||
``` shell
|
||||
cd ./src/frontend/admin
|
||||
npm install
|
||||
```
|
||||
3. 运行前端项目
|
||||
``` shell
|
||||
npm run dev
|
||||
```
|
||||
4. 体验前端程序
|
||||
- 浏览器打开 http://localhost:5020 ,将看到管理界面(默认用户名:root,密码:1234qwer)
|
||||
# 7. 运行前端项目
|
||||
npm run dev
|
||||
# 浏览器访问 http://localhost:5020 ,将看到管理界面(默认用户名密码:root 1234qwer)
|
||||
```
|
||||
|
||||
## 文件目录树
|
||||
## 文件目录
|
||||
|
||||
```
|
||||
+---.github # github 工程文件目录
|
||||
+---.template.config # dotnet 项目模板配置目录
|
||||
+---assets # 程序运行需要的资源文件目录
|
||||
+---dist # 程序编译与分发的二进制文件目录
|
||||
+---docs # 项目文档目录
|
||||
+---refs # 引用的第三方项目仓库目录
|
||||
+---src # 项目源文件目录
|
||||
+---assets # 项目资源文件目录
|
||||
+---build # 构建相关的工程文件目录
|
||||
+---dist # 编译生成的二进制文件目录
|
||||
+---docker # docker 镜像构建文件目录
|
||||
+---docs # 项目开发文档目录
|
||||
+---refs # 引用的第三方包的仓库目录
|
||||
+---scripts # 各种工具脚本文件目录
|
||||
+---src # 项目源码文件目录
|
||||
```
|
||||
|
||||
## 后端项目架构
|
||||
## 项目架构
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
H["NetAdmin.Host\n公共主机层\n(.Net自托管主机程序)\n(输入输出格式化)\n(数据校验、鉴权)\n(...所有HTTP管道过滤器中间件)"] --> C["NetAdmin.Cache\n公共缓存层\n(基于Redis或MemoryCache的缓存策略实现)"]
|
||||
C --> A["NetAdmin.Application\n公共业务逻辑层\n(内部服务增删改查)\n(外部服务增删改查)\n(...所有业务用例的计算与组合逻辑的模块化)"]
|
||||
A --> D["NetAdmin.Domain\n数据实体层\n(数据库关系实体映射)\n(DTO数据传输对象)\n(...所有数据模型的抽象与封装)"]
|
||||
D --> I["NetAdmin.Infrastructure\n基础设施层\n(第三方组件和Nuget包引用)\n(公共构建和程序运行配置)\n(公共常量枚举异常定义)\n(全球化化和多语言)\n(...所有公共Utility工具)"]
|
||||
|
||||
XH["NetAdmin.XXX.Host\n(WebApi)"]-->H
|
||||
XS["NetAdmin.XXXService\n(常驻内存服务)"]-->H
|
||||
XS["NetAdmin.XXXService\n(常驻内存服务)"]-->XC
|
||||
XC["NetAdmin.XXX.Cache\n(缓存层实例)"]-->C
|
||||
XA["NetAdmin.XXX.Application\n(业务逻辑层实例)"]-->A
|
||||
|
||||
XH-->XC
|
||||
XC-->XA
|
||||
sys-host["NetAdmin.SysComponent.Host\n(系统组件:主机层)"]
|
||||
sys-cache["NetAdmin.SysComponent.Cache\n(系统组件:缓存层)"]
|
||||
sys-app["NetAdmin.SysComponent.Application\n(系统组件:应用层)"]
|
||||
sys-domain["NetAdmin.SysComponent.Domain\n(系统组件:数据实体层)"]
|
||||
sys-infra["NetAdmin.SysComponent.Infrastructure\n(系统组件:基础设施层)"]
|
||||
host["NetAdmin.Host\n框架:主机层\n(.Net自托管主机程序)\n(输入输出格式化)\n(数据校验、鉴权)\n(...所有HTTP管道过滤器中间件)"]
|
||||
cache["NetAdmin.Cache\n框架:缓存层\n(基于Redis或MemoryCache的缓存策略实现)"]
|
||||
app["NetAdmin.Application\n框架:业务应用层\n(内部服务增删改查)\n(外部服务增删改查)\n(...所有业务用例的计算与组合逻辑的模块化)"]
|
||||
domain["NetAdmin.Domain\n框架:数据实体层\n(数据库关系实体映射)\n(DTO数据传输对象)\n(...所有数据模型的抽象与封装)"]
|
||||
infra["NetAdmin.Infrastructure\n框架:基础设施层\n(第三方组件和Nuget包引用)\n(公共构建和程序运行配置)\n(公共常量枚举异常定义)\n(全球化化和多语言)\n(...所有公共Utility工具)"]
|
||||
biz-host["YourSolution.XXX.Host\n(业务实例:主机层)"]
|
||||
biz-cache["YourSolution.XXX.Cache\n(业务实例:缓存层)"]
|
||||
biz-app["YourSolution.XXX.Application\n(业务实例:应用层)"]
|
||||
biz-domain["YourSolution.XXX.Domain\n(业务实例:数据实体层)"]
|
||||
biz-infra["YourSolution.XXX.Infrastructure\n(业务实例:基础设施层)"]
|
||||
biz-host-->biz-cache-->biz-app-->biz-domain-->biz-infra
|
||||
sys-host-->sys-cache-->sys-app-->sys-domain-->sys-infra
|
||||
host-->cache-->app-->domain-->infra
|
||||
biz-host-->sys-host-->host
|
||||
biz-cache-->sys-cache-->cache
|
||||
biz-app-->sys-app-->app
|
||||
biz-domain-->sys-domain-->domain
|
||||
biz-infra-->sys-infra-->infra
|
||||
```
|
||||
|
||||
## 引用的开源代码 / 特别鸣谢
|
||||
## 特别鸣谢
|
||||
|
||||
| 语言 | 集成领域 | 开源库 |
|
||||
|------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 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# | 代码质量检查 | [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# | 分布式锁 | [RedLock.net](https://github.com/samcook/RedLock.net) |
|
||||
| C# | 控制台终端界面库 | [Spectre.Console](https://github.com/spectreconsole/spectre.console) |
|
||||
| C# | 扩展函数库 | [NSExt](https://github.com/nsnail/ns-ext.git) |
|
||||
| C# | 图形处理库 | [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp) |
|
||||
@ -116,8 +110,6 @@ XC-->XA
|
||||
| C# | 性能监控采集 | [prometheus-net.AspNetCore](https://github.com/prometheus-net/prometheus-net) |
|
||||
| C# | 雪花ID生成器 | [Yitter.IdGenerator](https://github.com/yitter/idgenerator) |
|
||||
| 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 | 前端构建工具 | [Vite](https://github.com/vitejs/vite) |
|
||||
| TypeScript | UI控件库 | [Element Plus](https://github.com/element-plus/element-plus) |
|
||||
|
@ -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
249
assets/res/CountryCodes.ln
Normal file
@ -0,0 +1,249 @@
|
||||
不丹
|
||||
东帝汶
|
||||
中国
|
||||
中非
|
||||
丹麦
|
||||
乌克兰
|
||||
乌兹别克斯坦
|
||||
乌干达
|
||||
乌拉圭
|
||||
乍得
|
||||
也门
|
||||
亚美尼亚
|
||||
以色列
|
||||
伊拉克
|
||||
伊朗
|
||||
伯利兹
|
||||
佛得角
|
||||
俄罗斯
|
||||
保加利亚
|
||||
克罗地亚
|
||||
关岛
|
||||
冈比亚
|
||||
冰岛
|
||||
几内亚
|
||||
几内亚比绍
|
||||
列支敦士登
|
||||
刚果共和国
|
||||
刚果民主共和国
|
||||
利比亚
|
||||
利比里亚
|
||||
加拿大
|
||||
加纳
|
||||
加蓬
|
||||
匈牙利
|
||||
北马其顿
|
||||
北马里亚纳群岛
|
||||
南乔治亚和南桑威奇群岛
|
||||
南极洲
|
||||
南苏丹
|
||||
南非
|
||||
博茨瓦纳
|
||||
卡塔尔
|
||||
卢旺达
|
||||
卢森堡
|
||||
印度
|
||||
印度尼西亚
|
||||
危地马拉
|
||||
厄瓜多尔
|
||||
厄立特里亚
|
||||
叙利亚
|
||||
古巴
|
||||
台湾
|
||||
吉尔吉斯斯坦
|
||||
吉布提
|
||||
哈萨克斯坦
|
||||
哥伦比亚
|
||||
哥斯达黎加
|
||||
喀麦隆
|
||||
图瓦卢
|
||||
土库曼斯坦
|
||||
土耳其
|
||||
圣卢西亚
|
||||
圣基茨和尼维斯
|
||||
圣多美和普林西比
|
||||
圣巴泰勒米
|
||||
圣文森特和格林纳丁斯
|
||||
圣皮埃尔和密克隆
|
||||
圣诞岛
|
||||
圣赫勒拿
|
||||
圣马力诺
|
||||
圭亚那
|
||||
坦桑尼亚
|
||||
埃及
|
||||
埃塞俄比亚
|
||||
基里巴斯
|
||||
塔吉克斯坦
|
||||
塞内加尔
|
||||
塞尔维亚
|
||||
塞拉利昂
|
||||
塞浦路斯
|
||||
塞舌尔
|
||||
墨西哥
|
||||
多哥
|
||||
多米尼克
|
||||
多米尼加
|
||||
奥兰
|
||||
奥地利
|
||||
委内瑞拉
|
||||
孟加拉国
|
||||
安哥拉
|
||||
安圭拉
|
||||
安提瓜和巴布达
|
||||
安道尔
|
||||
密克罗尼西亚联邦
|
||||
尼加拉瓜
|
||||
尼日利亚
|
||||
尼日尔
|
||||
尼泊尔
|
||||
巴勒斯坦
|
||||
巴哈马
|
||||
巴基斯坦
|
||||
巴巴多斯
|
||||
巴布亚新几内亚
|
||||
巴拉圭
|
||||
巴拿马
|
||||
巴林
|
||||
巴西
|
||||
布基纳法索
|
||||
布隆迪
|
||||
布韦岛
|
||||
希腊
|
||||
帕劳
|
||||
库克群岛
|
||||
库拉索
|
||||
开曼群岛
|
||||
德国
|
||||
意大利
|
||||
所罗门群岛
|
||||
托克劳
|
||||
拉脱维亚
|
||||
挪威
|
||||
捷克
|
||||
摩尔多瓦
|
||||
摩洛哥
|
||||
摩纳哥
|
||||
文莱
|
||||
斐济
|
||||
斯威士兰
|
||||
斯洛伐克
|
||||
斯洛文尼亚
|
||||
斯瓦尔巴和扬马延
|
||||
斯里兰卡
|
||||
新加坡
|
||||
新喀里多尼亚
|
||||
新西兰
|
||||
日本
|
||||
智利
|
||||
朝鲜
|
||||
柬埔寨
|
||||
根西
|
||||
格林纳达
|
||||
格陵兰
|
||||
格鲁吉亚
|
||||
梵蒂冈
|
||||
比利时
|
||||
毛里塔尼亚
|
||||
毛里求斯
|
||||
汤加
|
||||
沙特阿拉伯
|
||||
法国
|
||||
法属南部和南极领地
|
||||
法属圣马丁
|
||||
法属圭亚那
|
||||
法属波利尼西亚
|
||||
法罗群岛
|
||||
波兰
|
||||
波多黎各
|
||||
波黑
|
||||
泰国
|
||||
泽西
|
||||
津巴布韦
|
||||
洪都拉斯
|
||||
海地
|
||||
澳大利亚
|
||||
澳门
|
||||
爱尔兰
|
||||
爱沙尼亚
|
||||
牙买加
|
||||
特克斯和凯科斯群岛
|
||||
特立尼达和多巴哥
|
||||
玻利维亚
|
||||
瑙鲁
|
||||
瑞典
|
||||
瑞士
|
||||
瓜德罗普
|
||||
瓦利斯和富图纳
|
||||
瓦努阿图
|
||||
留尼汪
|
||||
白俄罗斯
|
||||
百慕大
|
||||
皮特凯恩群岛
|
||||
直布罗陀
|
||||
福克兰群岛
|
||||
科威特
|
||||
科摩罗
|
||||
科特迪瓦
|
||||
科科斯基林群岛
|
||||
秘鲁
|
||||
突尼斯
|
||||
立陶宛
|
||||
索马里
|
||||
约旦
|
||||
纳米比亚
|
||||
纽埃
|
||||
缅甸
|
||||
罗马尼亚
|
||||
美国
|
||||
美国本土外小岛屿
|
||||
美属维尔京群岛
|
||||
美属萨摩亚
|
||||
老挝
|
||||
肯尼亚
|
||||
芬兰
|
||||
苏丹
|
||||
苏里南
|
||||
英国
|
||||
英属印度洋领地
|
||||
英属维尔京群岛
|
||||
荷兰
|
||||
荷兰加勒比区
|
||||
荷属圣马丁
|
||||
莫桑比克
|
||||
莱索托
|
||||
菲律宾
|
||||
萨尔瓦多
|
||||
萨摩亚
|
||||
葡萄牙
|
||||
蒙古
|
||||
蒙特塞拉特
|
||||
西撒哈拉
|
||||
西班牙
|
||||
诺福克岛
|
||||
贝宁
|
||||
赞比亚
|
||||
赤道几内亚
|
||||
赫德岛和麦克唐纳群岛
|
||||
越南
|
||||
阿塞拜疆
|
||||
阿富汗
|
||||
阿尔及利亚
|
||||
阿尔巴尼亚
|
||||
阿曼
|
||||
阿根廷
|
||||
阿联酋
|
||||
阿鲁巴
|
||||
韩国
|
||||
香港
|
||||
马尔代夫
|
||||
马恩岛
|
||||
马拉维
|
||||
马提尼克
|
||||
马来西亚
|
||||
马约特
|
||||
马绍尔群岛
|
||||
马耳他
|
||||
马达加斯加
|
||||
马里
|
||||
黎巴嫩
|
||||
黑山
|
@ -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>
|
@ -1,229 +0,0 @@
|
||||
1分钟内只能发送1次
|
||||
6位数字
|
||||
8位以上数字字母组合
|
||||
XML注释文件不存在
|
||||
不为其中之一
|
||||
不以什么开始
|
||||
不以什么结束
|
||||
不包含
|
||||
不等于
|
||||
业务模块
|
||||
东乡族
|
||||
丧偶
|
||||
中专
|
||||
中共党员
|
||||
中文姓名
|
||||
为其中之一
|
||||
乌孜别克族
|
||||
事务已回滚
|
||||
事务已提交
|
||||
京族
|
||||
人机校验请求不能为空
|
||||
人机验证未通过
|
||||
仡佬族
|
||||
以什么开始
|
||||
以什么结束
|
||||
仫佬族
|
||||
佤族
|
||||
侗族
|
||||
俄罗斯族
|
||||
保安族
|
||||
保密
|
||||
信息
|
||||
倒序排序
|
||||
傈僳族
|
||||
傣族
|
||||
允许的文件大小
|
||||
允许的文件格式
|
||||
全部数据
|
||||
公告
|
||||
共青团员
|
||||
出生证
|
||||
初中
|
||||
删除
|
||||
包含
|
||||
区号电话号码分机号
|
||||
博士
|
||||
博士后
|
||||
参数格式不正确
|
||||
发送失败
|
||||
同步数据库结构
|
||||
哈尼族
|
||||
哈萨克族
|
||||
唯一编码不能为空
|
||||
回族
|
||||
图标代码不能为空
|
||||
图标名称不能为空
|
||||
土家族
|
||||
土族
|
||||
基诺族
|
||||
塔吉克族
|
||||
塔塔尔族
|
||||
壮族
|
||||
外国人居留证
|
||||
大专
|
||||
大于
|
||||
大于等于
|
||||
女
|
||||
字典名称不能为空
|
||||
字典目录不存在
|
||||
字典目录编号不能为空
|
||||
字典编码不能为空
|
||||
宕机
|
||||
密码不能为空
|
||||
小于
|
||||
小于等于
|
||||
小学
|
||||
已发送
|
||||
已婚
|
||||
已完成
|
||||
已校验
|
||||
已读
|
||||
布依族
|
||||
布朗族
|
||||
并且
|
||||
开始事务
|
||||
彝族
|
||||
德昂族
|
||||
怒族
|
||||
意外错误
|
||||
成功
|
||||
或者
|
||||
手机
|
||||
手机号码
|
||||
手机号码不正确
|
||||
护照
|
||||
拉祜族族
|
||||
指定部门数据
|
||||
按钮
|
||||
插入种子数据
|
||||
撒拉族
|
||||
支付宝账号
|
||||
数据库同步开始
|
||||
数据库服务器时钟偏移
|
||||
数据库结构同步完成
|
||||
数据版本不能为空
|
||||
文件不能为空
|
||||
新密码不能为空
|
||||
新手机号码
|
||||
新手机号码验证码不正确
|
||||
无效操作
|
||||
无效端口号
|
||||
无效证件号码
|
||||
无效输入
|
||||
日志长度超过限制
|
||||
日期范围
|
||||
旧密码不正确
|
||||
旧密码不能为空
|
||||
旧手机号码
|
||||
旧手机号码不正确
|
||||
旧手机号码验证码不正确
|
||||
时间戳缺失或误差过大
|
||||
普米族
|
||||
景颇族
|
||||
朝鲜族
|
||||
未婚
|
||||
未指定部门
|
||||
未读
|
||||
本人数据
|
||||
本科
|
||||
本部门和下级部门数据
|
||||
本部门数据
|
||||
柯尔克孜族
|
||||
框架
|
||||
模块名称不能为空
|
||||
模块说明不能为空
|
||||
比较数据库结构
|
||||
毛南族
|
||||
水族
|
||||
汉族
|
||||
注册
|
||||
消息主题不能为空
|
||||
消息内容不能为空
|
||||
港澳台通行证
|
||||
满族
|
||||
父节点不存在
|
||||
独龙族
|
||||
珞巴族
|
||||
瑶族
|
||||
用户不存在
|
||||
用户名不能为空
|
||||
用户名不能是手机号
|
||||
用户名或密码错误
|
||||
用户名长度4位以上
|
||||
用户头像不能为空
|
||||
用户档案不能为空
|
||||
电子邮箱
|
||||
男
|
||||
畲族
|
||||
登录
|
||||
白族
|
||||
目标设备不能为空
|
||||
短信验证请求不能为空
|
||||
硕士
|
||||
离异
|
||||
私信
|
||||
站内信不存在
|
||||
等于
|
||||
等待发送
|
||||
签名缺失
|
||||
系统模块
|
||||
纳西族
|
||||
绑定手机号
|
||||
结果非预期
|
||||
维吾尔族
|
||||
羌族
|
||||
群众
|
||||
自定义
|
||||
苗族
|
||||
范围
|
||||
菜单
|
||||
菜单名称不能为空
|
||||
菜单标题不能为空
|
||||
菜单编号不能为空
|
||||
蒙古族
|
||||
藏族
|
||||
裕固族
|
||||
角色不存在
|
||||
角色名称不能为空
|
||||
角色编号不能为空
|
||||
角色编号列表不能为空
|
||||
解绑手机号
|
||||
警告
|
||||
设备类型不能为空
|
||||
该角色下存在用户
|
||||
该部门下存在子部门
|
||||
该部门下存在用户
|
||||
请求
|
||||
请求对象不能为空
|
||||
请联系管理员激活账号
|
||||
读取用户令牌出错
|
||||
调试
|
||||
账号不能为空
|
||||
赫哲族
|
||||
跟踪
|
||||
身份证
|
||||
达斡尔族
|
||||
邀请码不正确
|
||||
邮箱验证码不正确
|
||||
部门不存在
|
||||
部门名称不能为空
|
||||
鄂伦春族
|
||||
鄂温克族
|
||||
配置文件初始化完毕
|
||||
重设密码
|
||||
链接
|
||||
错误
|
||||
锡伯族
|
||||
键值不能为空
|
||||
键名称不能为空
|
||||
门巴族
|
||||
阿昌族
|
||||
顺序排序
|
||||
验证数据不能为空
|
||||
验证码不正确
|
||||
验证码不能为空
|
||||
验证码类型不能为空
|
||||
高中
|
||||
高山族
|
||||
黎族
|
56
assets/res/Nations.ln
Normal file
56
assets/res/Nations.ln
Normal file
@ -0,0 +1,56 @@
|
||||
东乡族
|
||||
乌孜别克族
|
||||
京族
|
||||
仡佬族
|
||||
仫佬族
|
||||
佤族
|
||||
侗族
|
||||
俄罗斯族
|
||||
保安族
|
||||
傈僳族
|
||||
傣族
|
||||
哈尼族
|
||||
哈萨克族
|
||||
回族
|
||||
土家族
|
||||
土族
|
||||
基诺族
|
||||
塔吉克族
|
||||
塔塔尔族
|
||||
壮族
|
||||
布依族
|
||||
布朗族
|
||||
彝族
|
||||
德昂族
|
||||
怒族
|
||||
拉祜族族
|
||||
撒拉族
|
||||
普米族
|
||||
景颇族
|
||||
朝鲜族
|
||||
柯尔克孜族
|
||||
毛南族
|
||||
水族
|
||||
汉族
|
||||
满族
|
||||
独龙族
|
||||
珞巴族
|
||||
瑶族
|
||||
畲族
|
||||
白族
|
||||
纳西族
|
||||
维吾尔族
|
||||
羌族
|
||||
苗族
|
||||
蒙古族
|
||||
藏族
|
||||
裕固族
|
||||
赫哲族
|
||||
达斡尔族
|
||||
鄂伦春族
|
||||
鄂温克族
|
||||
锡伯族
|
||||
门巴族
|
||||
阿昌族
|
||||
高山族
|
||||
黎族
|
70
assets/res/NetAdmin.Fields.ln
Normal file
70
assets/res/NetAdmin.Fields.ln
Normal file
@ -0,0 +1,70 @@
|
||||
不为其中之一
|
||||
不以什么开始
|
||||
不以什么结束
|
||||
不包含
|
||||
不排序
|
||||
不等于
|
||||
丧偶
|
||||
中专
|
||||
中共党员
|
||||
为其中之一
|
||||
以什么开始
|
||||
以什么结束
|
||||
保密
|
||||
保密
|
||||
信息
|
||||
倒序排序
|
||||
共青团员
|
||||
出生证
|
||||
初中
|
||||
包含
|
||||
博士
|
||||
博士后
|
||||
同步数据库结构
|
||||
外国人居留证
|
||||
外部错误
|
||||
大专
|
||||
大于
|
||||
大于等于
|
||||
女
|
||||
女
|
||||
宕机
|
||||
小于
|
||||
小于等于
|
||||
小学
|
||||
已婚
|
||||
并且
|
||||
成功
|
||||
或者
|
||||
护照
|
||||
插入种子数据
|
||||
无效操作
|
||||
无效输入
|
||||
日期范围
|
||||
未处理异常
|
||||
未婚
|
||||
本科
|
||||
比较数据库结构
|
||||
港澳台通行证
|
||||
男
|
||||
男
|
||||
硕士
|
||||
示例导出
|
||||
离异
|
||||
等于
|
||||
等于
|
||||
等于
|
||||
管理模块
|
||||
系统模块
|
||||
结果非预期
|
||||
群众
|
||||
自定义
|
||||
范围
|
||||
警告
|
||||
调试
|
||||
跟踪
|
||||
身份证
|
||||
错误
|
||||
随机排序
|
||||
顺序排序
|
||||
高中
|
23
assets/res/NetAdmin.Statements.ln
Normal file
23
assets/res/NetAdmin.Statements.ln
Normal file
@ -0,0 +1,23 @@
|
||||
6位数字
|
||||
8位以上数字字母组合
|
||||
XML注释文件不存在
|
||||
中文姓名
|
||||
事务已回滚
|
||||
事务已提交
|
||||
区号电话号码分机号
|
||||
参数格式不正确
|
||||
开始事务
|
||||
支付宝账号
|
||||
数据库同步开始
|
||||
数据库结构同步完成
|
||||
无效端口号
|
||||
无效证件号码
|
||||
时间表达式
|
||||
用户名不能是手机号码
|
||||
用户名长度4位以上
|
||||
种子数据插入完成
|
||||
记录已存在
|
||||
请求对象不能为空
|
||||
邀请码不正确
|
||||
配置文件初始化完毕
|
||||
非JSON字符串
|
81
assets/res/NetAdmin.SysComponent.Fields.ln
Normal file
81
assets/res/NetAdmin.SysComponent.Fields.ln
Normal file
@ -0,0 +1,81 @@
|
||||
上次执行时间
|
||||
上次执行状态
|
||||
上次执行耗时
|
||||
下次执行时间
|
||||
人工审核
|
||||
作业名称
|
||||
作业状态
|
||||
全部数据
|
||||
公告
|
||||
创建时间
|
||||
删除
|
||||
发送失败
|
||||
响应体
|
||||
响应状态码
|
||||
唯一编码
|
||||
备注
|
||||
字典内容导出
|
||||
客户端IP
|
||||
已发送
|
||||
已校验
|
||||
已读
|
||||
所属角色
|
||||
所属部门
|
||||
手机
|
||||
手机号
|
||||
执行耗时
|
||||
执行计划
|
||||
指定部门数据
|
||||
按钮
|
||||
排序
|
||||
接口名称
|
||||
接口导出
|
||||
接口描述
|
||||
接口路径
|
||||
操作系统
|
||||
数据范围
|
||||
无限权限
|
||||
是否启用
|
||||
显示仪表板
|
||||
最后登录时间
|
||||
未读
|
||||
本人数据
|
||||
本部门和下级部门数据
|
||||
本部门数据
|
||||
框架
|
||||
注册
|
||||
消息主题
|
||||
消息摘要
|
||||
消息类型
|
||||
用户代理
|
||||
用户名
|
||||
用户导出
|
||||
电子邮箱
|
||||
登录
|
||||
登录名
|
||||
登录日志导出
|
||||
空闲
|
||||
站内信导出
|
||||
等待发送
|
||||
绑定手机号码
|
||||
菜单
|
||||
角色名称
|
||||
角色导出
|
||||
解绑手机号码
|
||||
计划作业导出
|
||||
计划作业执行记录导出
|
||||
请求方式
|
||||
请求日志导出
|
||||
跟踪标识
|
||||
运行
|
||||
通知
|
||||
邮箱号
|
||||
部门名称
|
||||
部门导出
|
||||
配置导出
|
||||
重设密码
|
||||
链接
|
||||
项值
|
||||
项名
|
||||
默认角色
|
||||
默认部门
|
102
assets/res/NetAdmin.SysComponent.Statements.ln
Normal file
102
assets/res/NetAdmin.SysComponent.Statements.ln
Normal file
@ -0,0 +1,102 @@
|
||||
1分钟内只能发送1次
|
||||
人机校验请求不能为空
|
||||
人机验证未通过
|
||||
作业名称不能为空
|
||||
允许的文件大小
|
||||
允许的文件格式
|
||||
唯一编码不能为空
|
||||
图标代码不能为空
|
||||
图标名称不能为空
|
||||
婚姻状况不正确
|
||||
字典名称不能为空
|
||||
字典目录不存在
|
||||
字典目录编号不能为空
|
||||
字典目录编号不能为空
|
||||
字典编码不能为空
|
||||
学历不正确
|
||||
密码不能为空
|
||||
密码不能为空
|
||||
密码不能为空
|
||||
密码不能为空
|
||||
已处理完毕
|
||||
已处理完毕
|
||||
已处理完毕
|
||||
并发冲突_请稍后重试
|
||||
性别不正确
|
||||
手机号码不正确
|
||||
手机号码不能为空
|
||||
接口编码不存在
|
||||
政治面貌不正确
|
||||
数据库服务器时钟偏移
|
||||
文件不能为空
|
||||
新密码不能为空
|
||||
新手机号码验证码不正确
|
||||
旧密码不正确
|
||||
旧密码不能为空
|
||||
旧手机号码不正确
|
||||
旧手机号码验证码不正确
|
||||
时间计划不能为空
|
||||
未指定部门
|
||||
未获取到待执行任务
|
||||
模块名称不能为空
|
||||
模块类型不能为空
|
||||
模块说明不能为空
|
||||
此节点已下线
|
||||
此节点已下线
|
||||
民族不正确
|
||||
消息主题不能为空
|
||||
消息内容不能为空
|
||||
父节点不存在
|
||||
用户不存在
|
||||
用户名不能为空
|
||||
用户名不能为空
|
||||
用户名不能为空
|
||||
用户名或密码错误
|
||||
用户头像不能为空
|
||||
用户编号不存在
|
||||
目标设备不能为空
|
||||
目标设备不能为空
|
||||
短信验证请求不能为空
|
||||
短信验证请求不能为空
|
||||
短信验证请求不能为空
|
||||
站内信不存在
|
||||
站内信状态不正确
|
||||
站内信类型不正确
|
||||
缓存键不能为空
|
||||
网络地址不正确
|
||||
网络地址不正确
|
||||
网络地址不正确
|
||||
菜单名称不能为空
|
||||
菜单标题不能为空
|
||||
菜单类型不正确
|
||||
菜单编号不能为空
|
||||
角色不存在
|
||||
角色名称不能为空
|
||||
角色数据范围不正确
|
||||
角色编号不能为空
|
||||
角色编号列表不能为空
|
||||
设备类型不能为空
|
||||
证件类型不正确
|
||||
该角色下存在用户
|
||||
该部门下存在子部门
|
||||
该部门下存在用户
|
||||
请求地址不能为空
|
||||
请求方法不正确
|
||||
请稍后重试
|
||||
请联系管理员激活账号
|
||||
读取用户令牌出错
|
||||
账号不能为空
|
||||
邮箱验证码不正确
|
||||
部门不存在
|
||||
部门名称不能为空
|
||||
键值不能为空
|
||||
键名称不能为空
|
||||
键名称不能为空
|
||||
随机延时结束时间不正确
|
||||
随机延时起始时间不正确
|
||||
验证数据不能为空
|
||||
验证码不正确
|
||||
验证码不能为空
|
||||
验证码目标设备类型不正确
|
||||
验证码类型不正确
|
||||
验证码类型不能为空
|
0
assets/res/YourSolution.AdmServer.Fields.ln
Normal file
0
assets/res/YourSolution.AdmServer.Fields.ln
Normal file
0
assets/res/YourSolution.AdmServer.Statements.ln
Normal file
0
assets/res/YourSolution.AdmServer.Statements.ln
Normal file
@ -1,8 +1,8 @@
|
||||
[
|
||||
{
|
||||
"Enabled": true,
|
||||
"Id": 372119301627909,
|
||||
"Name": "默认部门",
|
||||
"Enabled": true,
|
||||
"Sort": 100
|
||||
}
|
||||
]
|
File diff suppressed because it is too large
Load Diff
13
assets/seed-data/Sys_Job.json
Normal file
13
assets/seed-data/Sys_Job.json
Normal 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,
|
||||
}
|
||||
]
|
@ -1,28 +1,30 @@
|
||||
[
|
||||
// ------------------------------ 主控面板 ------------------------------
|
||||
{
|
||||
"Component": "home",
|
||||
"Icon": "el-icon-house",
|
||||
"Id": 373837717815301,
|
||||
"Name": "home",
|
||||
"Path": "/home",
|
||||
"Sort": 100,
|
||||
"Title": "控制面板",
|
||||
"Sort": 999,
|
||||
"Title": "主控面板",
|
||||
"Type": 1
|
||||
},
|
||||
// ------------------------------ 权限管理 ------------------------------
|
||||
{
|
||||
"Icon": "el-icon-setting",
|
||||
"Id": 373837917724677,
|
||||
"Name": "sys",
|
||||
"Path": "/sys",
|
||||
"Sort": 99,
|
||||
"Title": "系统管理",
|
||||
"Name": "power",
|
||||
"Path": "/power",
|
||||
"Sort": 100,
|
||||
"Title": "权限管理",
|
||||
"Type": 1
|
||||
},
|
||||
{
|
||||
"Component": "sys/user",
|
||||
"Icon": "el-icon-user",
|
||||
"Id": 373837957840901,
|
||||
"Name": "sys-user",
|
||||
"Name": "sys/user",
|
||||
"ParentId": 373837917724677,
|
||||
"Path": "/sys/user",
|
||||
"Sort": 100,
|
||||
@ -33,7 +35,7 @@
|
||||
"Component": "sys/role",
|
||||
"Icon": "sc-icon-role",
|
||||
"Id": 373838018527237,
|
||||
"Name": "sys-role",
|
||||
"Name": "sys/role",
|
||||
"ParentId": 373837917724677,
|
||||
"Path": "/sys/role",
|
||||
"Sort": 99,
|
||||
@ -44,7 +46,7 @@
|
||||
"Component": "sys/dept",
|
||||
"Icon": "sc-icon-dept",
|
||||
"Id": 373838045605893,
|
||||
"Name": "sys-dept",
|
||||
"Name": "sys/dept",
|
||||
"ParentId": 373837917724677,
|
||||
"Path": "/sys/dept",
|
||||
"Sort": 98,
|
||||
@ -55,90 +57,122 @@
|
||||
"Component": "sys/menu",
|
||||
"Icon": "el-icon-fold",
|
||||
"Id": 373838070898693,
|
||||
"Name": "sys-menu",
|
||||
"Name": "sys/menu",
|
||||
"ParentId": 373837917724677,
|
||||
"Path": "/sys/menu",
|
||||
"Sort": 96,
|
||||
"Sort": 97,
|
||||
"Title": "菜单管理",
|
||||
"Type": 1
|
||||
},
|
||||
// ------------------------------ 系统管理 ------------------------------
|
||||
{
|
||||
"Component": "sys/log",
|
||||
"Icon": "el-icon-tickets",
|
||||
"Id": 374792687640581,
|
||||
"Name": "sys-log",
|
||||
"ParentId": 373837917724677,
|
||||
"Path": "/sys/log",
|
||||
"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": "字典管理",
|
||||
"Icon": "sc-icon-App",
|
||||
"Id": 485278637670422,
|
||||
"Name": "sys",
|
||||
"Path": "/sys",
|
||||
"Sort": 99,
|
||||
"Title": "系统管理",
|
||||
"Type": 1
|
||||
},
|
||||
{
|
||||
"Component": "sys/config",
|
||||
"Icon": "el-icon-set-up",
|
||||
"Id": 380415005847557,
|
||||
"Name": "sys-config",
|
||||
"ParentId": 373837917724677,
|
||||
"Name": "sys/config",
|
||||
"ParentId": 485278637670422,
|
||||
"Path": "/sys/config",
|
||||
"Sort": 92,
|
||||
"Sort": 100,
|
||||
"Title": "系统设置",
|
||||
"Type": 1
|
||||
},
|
||||
{
|
||||
"Component": "home/widgets/components/ver",
|
||||
"Icon": "el-icon-pointer",
|
||||
"Id": 480998862188554,
|
||||
"Name": "sys-about",
|
||||
"ParentId": 373837917724677,
|
||||
"Path": "/sys/about",
|
||||
"Sort": 91,
|
||||
"Title": "版本信息",
|
||||
"Type": 1,
|
||||
"Component": "sys/job",
|
||||
"Icon": "sc-icon-ScheduledJob",
|
||||
"Id": 510067557638158,
|
||||
"Name": "sys/job",
|
||||
"ParentId": 485278637670422,
|
||||
"Path": "/sys/job",
|
||||
"Sort": 99,
|
||||
"Title": "计划作业",
|
||||
"Type": 1
|
||||
},
|
||||
{
|
||||
"Component": "sys/api",
|
||||
"Icon": "sc-icon-api",
|
||||
"Id": 397880678895621,
|
||||
"Name": "sys-api",
|
||||
"ParentId": 373837917724677,
|
||||
"Path": "/sys/api",
|
||||
"Sort": 96,
|
||||
"Title": "接口管理",
|
||||
"Component": "sys/dic",
|
||||
"Icon": "sc-icon-dic",
|
||||
"Id": 375315654221829,
|
||||
"Name": "sys/dic",
|
||||
"ParentId": 485278637670422,
|
||||
"Path": "/sys/dic",
|
||||
"Sort": 98,
|
||||
"Title": "字典管理",
|
||||
"Type": 1
|
||||
},
|
||||
{
|
||||
"Component": "sys/msg",
|
||||
"Icon": "el-icon-message",
|
||||
"Id": 482779610341392,
|
||||
"Name": "sys-msg",
|
||||
"ParentId": 373837917724677,
|
||||
"Name": "sys/msg",
|
||||
"ParentId": 485278637670422,
|
||||
"Path": "/sys/msg",
|
||||
"Sort": 98,
|
||||
"Sort": 97,
|
||||
"Title": "消息管理",
|
||||
"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": "el-icon-tickets",
|
||||
"Id": 374792687640581,
|
||||
"Name": "log",
|
||||
"Path": "/log",
|
||||
"Sort": 98,
|
||||
"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",
|
||||
"Id": 373838105399301,
|
||||
@ -152,7 +186,7 @@
|
||||
"Component": "dev/code",
|
||||
"Icon": "sc-icon-code2",
|
||||
"Id": 373838147022853,
|
||||
"Name": "dev-code",
|
||||
"Name": "dev/code",
|
||||
"ParentId": 373838105399301,
|
||||
"Path": "/dev/code",
|
||||
"Sort": 100,
|
||||
@ -163,10 +197,20 @@
|
||||
"Id": 482777529417739,
|
||||
"ParentId": 373838105399301,
|
||||
"Icon": "el-icon-eleme-filled",
|
||||
"Name": "dev-element",
|
||||
"Path": "https://element-plus.gitee.io/zh-CN/component/button.html",
|
||||
"Sort": 100,
|
||||
"Name": "dev/element",
|
||||
"Path": "http://element-plus.org/zh-CN/component/overview.html",
|
||||
"Sort": 99,
|
||||
"Title": "Element",
|
||||
"Type": 3,
|
||||
},
|
||||
{
|
||||
"Id": 560217289232398,
|
||||
"ParentId": 373838105399301,
|
||||
"Icon": "sc-icon-FreeSql",
|
||||
"Name": "dev/freesql",
|
||||
"Path": "https://freesql.net/guide",
|
||||
"Sort": 99,
|
||||
"Title": "FreeSql",
|
||||
"Type": 3,
|
||||
}
|
||||
]
|
@ -1,15 +1,15 @@
|
||||
[
|
||||
{
|
||||
"DataScope": 1,
|
||||
"DisplayDashboard": true,
|
||||
"Enabled": true,
|
||||
"Id": 370943613149253,
|
||||
"IgnorePermissionControl": true,
|
||||
"DisplayDashboard": true,
|
||||
"Name": "超级管理员",
|
||||
"Sort": 100
|
||||
},
|
||||
{
|
||||
"DataScope": 1,
|
||||
"DataScope": 4,
|
||||
"Enabled": true,
|
||||
"Id": 371729946431493,
|
||||
"Name": "普通用户",
|
||||
|
@ -16,7 +16,31 @@
|
||||
"RoleId": 371729946431493
|
||||
},
|
||||
{
|
||||
"ApiId": "api/biz/member/member.info",
|
||||
"RoleId": 371729946431493
|
||||
"ApiId": "api/sys/site.msg/unread.count",
|
||||
"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,
|
||||
}
|
||||
]
|
@ -1,11 +1,9 @@
|
||||
[
|
||||
{
|
||||
"Id": 396423792566281,
|
||||
"MenuId": 373837717815301,
|
||||
"RoleId": 371729946431493
|
||||
},
|
||||
{
|
||||
"Id": 396423792566282,
|
||||
"MenuId": 374967228141573,
|
||||
"RoleId": 371729946431493
|
||||
}
|
||||
|
@ -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>",
|
||||
"MsgType": 2,
|
||||
"Summary": "尊敬的用户:\n欢迎您使用 NetAdmin 后台管理系统!NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#12/.NET8、Vue3/Vite、Element Plus 等现代",
|
||||
"Title": "欢迎使用 NetAdmin 后台管理系统",
|
||||
"Content": "<p>尊敬的用户:</p>\n<p style=\"padding-left: 40px;\">欢迎您使用 NetAdmin 后台管理系统!NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#12/.NET9、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>",
|
||||
"CreatedUserId": 370942943322181,
|
||||
"CreatedUserName": "root",
|
||||
"MsgType": 2,
|
||||
"Summary": "尊敬的用户:\n欢迎您使用 NetAdmin 后台管理系统!NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#12/.NET9、Vue3/Vite、Element Plus 等现代",
|
||||
"Title": "欢迎使用 NetAdmin 后台管理系统",
|
||||
}
|
||||
]
|
@ -6,5 +6,13 @@
|
||||
"Password": "A8E87D23-49BC-25A1-1C7C-59186BEF5D15",
|
||||
"Token": "A9AFD92E-A33D-4152-9A6C-A9C141D24887",
|
||||
"UserName": "root"
|
||||
},
|
||||
{
|
||||
"DeptId": 372119301627909,
|
||||
"Enabled": true,
|
||||
"Id": 560217289236492,
|
||||
"Password": "A8E87D23-49BC-25A1-1C7C-59186BEF5D15",
|
||||
"Token": "4208EA97-B32F-4E39-A290-4C0D27B61EBF",
|
||||
"UserName": "user"
|
||||
}
|
||||
]
|
@ -1,5 +1,10 @@
|
||||
[
|
||||
{
|
||||
"Id": 370942943322181
|
||||
"Id": 370942943322181,
|
||||
"AppConfig": "[]"
|
||||
},
|
||||
{
|
||||
"Id": 560217289236492,
|
||||
"AppConfig": "[]"
|
||||
}
|
||||
]
|
@ -2,5 +2,9 @@
|
||||
{
|
||||
"RoleId": 370943613149253,
|
||||
"UserId": 370942943322181
|
||||
},
|
||||
{
|
||||
"RoleId": 371729946431493,
|
||||
"UserId": 560217289236492
|
||||
}
|
||||
]
|
49
build.cake
49
build.cake
@ -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)
|
@ -1,6 +1,6 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<CodeAnalysisRuleSet>$(SolutionDir)/stylecop.analyzers.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSet>$(SolutionDir)/build/stylecop.analyzers.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
|
||||
@ -11,15 +11,19 @@
|
||||
<WarningsAsErrors>true</WarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.507">
|
||||
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Roslynator.Analyzers" Version="4.6.2">
|
||||
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.12.19">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.12.0.78982">
|
||||
<PackageReference Include="Roslynator.Analyzers" Version="4.12.9">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.32.0.97167">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
@ -3,8 +3,8 @@
|
||||
<ItemGroup>
|
||||
<PackageReferenceFiles
|
||||
Condition="%(PackageReference.CopyToOutputDirectory) != ''"
|
||||
Include="$(NugetPackageRoot)\%(PackageReference.Identity)\%(PackageReference.Version)\%(PackageReference.CopyToOutputDirectory)"/>
|
||||
Include="$(NugetPackageRoot)\%(PackageReference.Identity)\%(PackageReference.Version)\%(PackageReference.CopyToOutputDirectory)" />
|
||||
</ItemGroup>
|
||||
<Copy SourceFiles="@(PackageReferenceFiles)" DestinationFolder="$(OutDir)"/>
|
||||
<Copy SourceFiles="@(PackageReferenceFiles)" DestinationFolder="$(OutDir)" />
|
||||
</Target>
|
||||
</Project>
|
12
build/prebuild.targets
Normal file
12
build/prebuild.targets
Normal 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>
|
@ -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] )"
|
||||
}
|
@ -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
|
@ -1 +0,0 @@
|
||||
dotnet jb cleanupcode --no-build ./NetAdmin.sln
|
1
docker/README.md
Normal file
1
docker/README.md
Normal file
@ -0,0 +1 @@
|
||||
docker
|
29
docs/manual/docs/.vitepress/config.mts
Normal file
29
docs/manual/docs/.vitepress/config.mts
Normal 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' }
|
||||
]
|
||||
}
|
||||
})
|
49
docs/manual/docs/api-examples.md
Normal file
49
docs/manual/docs/api-examples.md
Normal 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
24
docs/manual/docs/index.md
Normal 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
|
||||
---
|
85
docs/manual/docs/markdown-examples.md
Normal file
85
docs/manual/docs/markdown-examples.md
Normal 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
10
docs/manual/package.json
Normal 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"
|
||||
}
|
||||
}
|
@ -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
|
@ -3,34 +3,10 @@
|
||||
"isRoot": true,
|
||||
"tools": {
|
||||
"dotnet-t4": {
|
||||
"version": "2.3.1",
|
||||
"version": "3.0.0",
|
||||
"commands": [
|
||||
"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"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
"sdk": {
|
||||
"version": "8.0.0",
|
||||
"version": "9.0.0",
|
||||
"rollForward": "latestMajor",
|
||||
"allowPrerelease": true
|
||||
},
|
||||
"tools": {
|
||||
"dotnet": "8.0.0"
|
||||
"dotnet": "9.0.0"
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
dotnet new uninstall .
|
||||
dotnet new --install .
|
@ -2,7 +2,6 @@
|
||||
|
||||
<configuration>
|
||||
<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>
|
||||
</configuration>
|
10
package.json
10
package.json
@ -1,10 +1,10 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"version": "2.1.0",
|
||||
"devDependencies": {
|
||||
"cz-git": "^1.7.1",
|
||||
"commitizen": "^4.3.0",
|
||||
"prettier": "^3.1.0",
|
||||
"standard-version": "9.5.0"
|
||||
"cz-git": "^1.11.0",
|
||||
"commitizen": "^4.3.1",
|
||||
"prettier": "^3.3.3",
|
||||
"standard-version": "^9.5.0"
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
|
@ -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/FreeSql
Submodule
1
refs/FreeSql
Submodule
Submodule refs/FreeSql added at 013f35e296
1
refs/Gurion
Submodule
1
refs/Gurion
Submodule
Submodule refs/Gurion added at d54b0b7cf8
1
refs/ns-ext
Submodule
1
refs/ns-ext
Submodule
Submodule refs/ns-ext added at 7557cb0538
@ -1,10 +1,15 @@
|
||||
$branch = $( git branch --show-current )
|
||||
./dot.clean.cmd
|
||||
git add .
|
||||
./node_modules/.bin/git-cz.ps1
|
||||
git add ../
|
||||
$skipFormat = Read-Host "输入 n 跳过代码整理"
|
||||
if ($skipFormat -ne "n")
|
||||
{
|
||||
./code.clean.ps1
|
||||
}
|
||||
git add ../
|
||||
../node_modules/.bin/git-cz.ps1
|
||||
git pull
|
||||
git push --set-upstream origin $branch
|
||||
Start-Process -FilePath "https://github.com/nsnail/NetAdmin/compare/main...$branch"
|
||||
Write-Host "按『Enter』重建分支,『Ctrl+C』退出"
|
||||
Pause
|
||||
./git.rc.ps1
|
||||
./3.git.recreate.branch.ps1
|
29
scripts/2.git.release.ps1
Normal file
29
scripts/2.git.release.ps1
Normal file
@ -0,0 +1,29 @@
|
||||
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
|
2
scripts/4.git.del.obsolete.tags.ps1
Normal file
2
scripts/4.git.del.obsolete.tags.ps1
Normal file
@ -0,0 +1,2 @@
|
||||
git push origin :refs/tags/$(git tag -l "*-*")
|
||||
git tag -d $(git tag -l "*-*")
|
26
scripts/clean.ln.csx
Normal file
26
scripts/clean.ln.csx
Normal 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);
|
||||
}
|
@ -18,7 +18,7 @@ using System.Net.Http.Json;
|
||||
{
|
||||
CreateNoWindow = true,
|
||||
FileName = "dotnet",
|
||||
Arguments = $"jb cleanupcode --include=\"{files}\" --no-build ./NetAdmin.sln",
|
||||
Arguments = $"jb cleanupcode --include=\"{files}\" --no-build ../NetAdmin.sln",
|
||||
UseShellExecute = false,
|
||||
RedirectStandardOutput = true
|
||||
}
|
5
scripts/code.clean.ps1
Normal file
5
scripts/code.clean.ps1
Normal file
@ -0,0 +1,5 @@
|
||||
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.sln
|
||||
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 ../
|
15
scripts/find.unused.ln.csx
Normal file
15
scripts/find.unused.ln.csx
Normal 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();
|
@ -63,7 +63,7 @@ public sealed class Ln
|
||||
public static CultureInfo Culture { get; set; }
|
||||
<#
|
||||
var xml = new XmlDocument();
|
||||
xml.Load("./assets/res/Ln.resx");
|
||||
xml.Load("../assets/res/Ln.resx");
|
||||
foreach (XmlNode data in xml.SelectNodes("//root/data")!)
|
||||
{
|
||||
#>
|
2
scripts/gen.ln.cmd
Normal file
2
scripts/gen.ln.cmd
Normal 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
|
@ -1,6 +1,7 @@
|
||||
<#@ template language="C#" #>
|
||||
<#@ output encoding="utf-8" extension="resx" #>
|
||||
<#@ import namespace="System.IO" #>
|
||||
<#@ import namespace="System.Linq" #>
|
||||
<#@ import namespace="System.Text.RegularExpressions" #>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
@ -26,10 +27,9 @@
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
</value>
|
||||
</resheader>
|
||||
// ReSharper disable DuplicateResource
|
||||
<#
|
||||
var regex = new Regex(@"^\d", RegexOptions.Compiled);
|
||||
foreach (var line in File.ReadLines("./assets/res/ln.txt"))
|
||||
foreach (var line in Directory.GetFiles("../assets/res/", "*.ln").SelectMany(x => File.ReadLines(x)).Distinct())
|
||||
{
|
||||
#>
|
||||
<data name="<#= regex.IsMatch(line) ? "_" : "" #><#= line #>" xml:space="preserve"><value><#= line #></value></data>
|
@ -7,7 +7,7 @@
|
||||
|
||||
var files = Directory
|
||||
.EnumerateFiles(
|
||||
"./",
|
||||
"../",
|
||||
"*.png",
|
||||
new EnumerationOptions
|
||||
{
|
||||
@ -37,7 +37,7 @@ files = new[] { "*.jpg", "*.jpeg" }
|
||||
.SelectMany(
|
||||
x =>
|
||||
Directory.EnumerateFiles(
|
||||
"./",
|
||||
"../",
|
||||
x,
|
||||
new EnumerationOptions
|
||||
{
|
2
scripts/install.as.tpl.ps1
Normal file
2
scripts/install.as.tpl.ps1
Normal file
@ -0,0 +1,2 @@
|
||||
dotnet new uninstall ../
|
||||
dotnet new --install ../
|
@ -1,11 +1,11 @@
|
||||
#r "nuget: NSExt, 1.1.0"
|
||||
#r "nuget: NSExt, 2.2.0"
|
||||
using NSExt.Extensions;
|
||||
|
||||
Console.WriteLine("请输入原始名称(NetAdmin):");
|
||||
var oldName = Console.ReadLine().NullOrEmpty("NetAdmin");
|
||||
Console.WriteLine("请输入替换名称:");
|
||||
var newName = Console.ReadLine();
|
||||
foreach (var path in Directory.EnumerateDirectories("./", $"*{oldName}*",
|
||||
foreach (var path in Directory.EnumerateDirectories("../", $"*{oldName}*",
|
||||
SearchOption.AllDirectories))
|
||||
{
|
||||
Console.Write($"{path} --> ");
|
||||
@ -16,7 +16,7 @@ foreach (var path in Directory.EnumerateDirectories("./", $"*{oldName}*",
|
||||
|
||||
|
||||
Console.WriteLine();
|
||||
foreach (var path in Directory.EnumerateFiles("./", $"*.*", SearchOption.AllDirectories))
|
||||
foreach (var path in Directory.EnumerateFiles("../", $"*.*", SearchOption.AllDirectories))
|
||||
{
|
||||
File.WriteAllText(path, File.ReadAllText(path).Replace(oldName, newName));
|
||||
var newPath = path.Replace(oldName, newName);
|
1
scripts/resharper.full.ps1
Normal file
1
scripts/resharper.full.ps1
Normal file
@ -0,0 +1 @@
|
||||
jb cleanupcode --no-build ../NetAdmin.sln
|
42
scripts/switch.nuget.or.project.csx
Normal file
42
scripts/switch.nuget.or.project.csx
Normal file
@ -0,0 +1,42 @@
|
||||
using System.Text.RegularExpressions;
|
||||
string input = string.Empty;
|
||||
while (!new[] { "1", "2" }.Contains(input))
|
||||
{
|
||||
Console.WriteLine("1.nuget 2.project");
|
||||
input = Console.ReadLine();
|
||||
}
|
||||
var slnFile = Directory.GetFiles(@"../", "*.sln").First();
|
||||
var csprojFiles = Directory.GetFiles(@"../src", "*.csproj", new EnumerationOptions { RecurseSubdirectories = true });
|
||||
var slnContent = File.ReadAllText(slnFile);
|
||||
|
||||
if (input == "1")
|
||||
{
|
||||
slnContent = Regex.Replace(slnContent, "\\nProject\\((.*)#refs", "\n##Project($1#refs");
|
||||
slnContent = Regex.Replace(slnContent, "\\nEndProject#refs", "\n##EndProject#refs");
|
||||
foreach (Match m in Regex.Matches(slnContent, "\"(\\{[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\\})\"#refs"))
|
||||
{
|
||||
slnContent = slnContent.Replace($" {m.Groups[1].Value}.", $" ##{m.Groups[1].Value}.");
|
||||
}
|
||||
foreach (var csprojFile in csprojFiles)
|
||||
{
|
||||
var csprojContent = File.ReadAllText(csprojFile);
|
||||
csprojContent = Regex.Replace(csprojContent," <ProjectReference(.*)Label=\"refs\"(.*)>", " <!--<ProjectReference$1Label=\"refs\"$2>-->");
|
||||
csprojContent = Regex.Replace(csprojContent," <!--<PackageReference(.*)Label=\"refs\"(.*)>-->", " <PackageReference$1Label=\"refs\"$2>");
|
||||
File.WriteAllText(csprojFile, csprojContent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
slnContent = Regex.Replace(slnContent, "##", "");
|
||||
foreach (var csprojFile in csprojFiles)
|
||||
{
|
||||
var csprojContent = File.ReadAllText(csprojFile);
|
||||
csprojContent = Regex.Replace(csprojContent," <!--<ProjectReference(.*)Label=\"refs\"(.*)>-->", " <ProjectReference$1Label=\"refs\"$2>");
|
||||
csprojContent = Regex.Replace(csprojContent," <PackageReference(.*)Label=\"refs\"(.*)>", " <!--<PackageReference$1Label=\"refs\"$2>-->");
|
||||
File.WriteAllText(csprojFile, csprojContent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Console.WriteLine(slnContent);
|
||||
File.WriteAllText(slnFile, slnContent);
|
77
scripts/sync.sln.files.csx
Normal file
77
scripts/sync.sln.files.csx
Normal file
@ -0,0 +1,77 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
var slnFile = Directory.GetFiles(@"../", "*.sln").First();
|
||||
var content = File.ReadAllText(slnFile);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"meta\", \"meta\", \"{5198A03D-0CAC-4828-A807-34A693F73859}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0CAC-4828-A807-34A693F73859}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../", "*").Where(x => !x.EndsWith(".sln") && !x.EndsWith(".user"))
|
||||
.Select(x=>$" {Path.GetFileName(x)} = {Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"docker\", \"docker\", \"{E80A1018-C354-4A26-9029-8847BB9DA864}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker", "docker", "{E80A1018-C354-4A26-9029-8847BB9DA864}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../docker", "*")
|
||||
.Select(x=>$" {Path.GetFileName(x)} = docker/{Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"workflows\", \"workflows\", \"{3C6F049E-3EE8-4D66-9AFF-E8A369032487}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{3C6F049E-3EE8-4D66-9AFF-E8A369032487}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../.github/workflows", "*")
|
||||
.Select(x=>$" {Path.GetFileName(x)} = .github/workflows/{Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"scripts\", \"scripts\", \"{BB0B25C9-0901-4923-913F-00F9A6B352A5}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{BB0B25C9-0901-4923-913F-00F9A6B352A5}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../scripts", "*")
|
||||
.Select(x=>$" {Path.GetFileName(x)} = scripts/{Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"build\", \"build\", \"{8E4C93BA-9493-4892-80C4-5E174C504829}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{8E4C93BA-9493-4892-80C4-5E174C504829}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../build", "*")
|
||||
.Select(x=>$" {Path.GetFileName(x)} = build/{Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
Console.WriteLine(content);
|
||||
File.WriteAllText(slnFile, content);
|
39
scripts/wait.server.stop.sh
Normal file
39
scripts/wait.server.stop.sh
Normal file
@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 检查是否提供了 URL 参数
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <url>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 获取外部传入的 URL 参数
|
||||
URL="$1"
|
||||
|
||||
# 初始化返回值和时间限制
|
||||
response=""
|
||||
start_time=$(date +%s)
|
||||
time_limit=600 # 10分钟的秒数
|
||||
|
||||
# 循环检查 API 返回值
|
||||
while [ "$response" != "1" ]; do
|
||||
# 等待一段时间再进行下一次检查,避免频繁请求
|
||||
sleep 1
|
||||
|
||||
# 使用 curl 请求 URL,并捕获返回值,忽略 SSL 证书错误
|
||||
response=$(curl -sk "$URL")
|
||||
|
||||
# 打印返回值 (可选)
|
||||
echo "$1: $response"
|
||||
|
||||
# 检查时间是否超过限制
|
||||
current_time=$(date +%s)
|
||||
elapsed_time=$((current_time - start_time))
|
||||
|
||||
if [ "$elapsed_time" -ge "$time_limit" ]; then
|
||||
echo "Time limit exceeded. Continuing with the script..."
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# 无论是因为返回值为 "1" 还是超时,继续执行后续脚本
|
||||
echo "Continuing with the script..."
|
@ -25,16 +25,16 @@ global using FreeSql;
|
||||
global using FreeSql.Aop;
|
||||
global using FreeSql.DataAnnotations;
|
||||
global using FreeSql.Internal.Model;
|
||||
global using Furion;
|
||||
global using Furion.Authorization;
|
||||
global using Furion.ConfigurableOptions;
|
||||
global using Furion.DataEncryption;
|
||||
global using Furion.DataValidation;
|
||||
global using Furion.DependencyInjection;
|
||||
global using Furion.DynamicApiController;
|
||||
global using Furion.EventBus;
|
||||
global using Furion.SpecificationDocument;
|
||||
global using Furion.UnifyResult;
|
||||
global using Gurion;
|
||||
global using Gurion.Authorization;
|
||||
global using Gurion.ConfigurableOptions;
|
||||
global using Gurion.DataEncryption;
|
||||
global using Gurion.DataValidation;
|
||||
global using Gurion.DependencyInjection;
|
||||
global using Gurion.DynamicApiController;
|
||||
global using Gurion.EventBus;
|
||||
global using Gurion.SpecificationDocument;
|
||||
global using Gurion.UnifyResult;
|
||||
global using Mapster;
|
||||
global using Microsoft.AspNetCore.Authorization;
|
||||
global using Microsoft.AspNetCore.Builder;
|
||||
@ -63,8 +63,4 @@ global using NetAdmin.Infrastructure.Extensions;
|
||||
global using NetAdmin.Infrastructure.Languages;
|
||||
global using NetAdmin.Infrastructure.Utils;
|
||||
global using NSExt.Attributes;
|
||||
global using NSExt.Extensions;
|
||||
#if !INFRAS
|
||||
global using DynamicFilterInfo = NetAdmin.Domain.Dto.Dependency.DynamicFilterInfo;
|
||||
global using DynamicFilterOperators = NetAdmin.Domain.Enums.DynamicFilterOperators;
|
||||
#endif
|
||||
global using NSExt.Extensions;
|
@ -1,19 +0,0 @@
|
||||
using NetAdmin.Domain.Contexts;
|
||||
using NetAdmin.Domain.DbMaps.Dependency;
|
||||
|
||||
namespace NetAdmin.Application.Repositories;
|
||||
|
||||
/// <summary>
|
||||
/// 默认仓储
|
||||
/// </summary>
|
||||
public sealed class DefaultRepository<TEntity>(IFreeSql fSql //
|
||||
, UnitOfWorkManager uowManger //
|
||||
, ContextUserToken userToken) //
|
||||
: DefaultRepository<TEntity, long>(fSql, uowManger)
|
||||
where TEntity : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 当前上下文关联的用户
|
||||
/// </summary>
|
||||
public ContextUserToken UserToken => userToken;
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
using NetAdmin.Application.Repositories;
|
||||
using NetAdmin.Domain.DbMaps.Dependency;
|
||||
|
||||
namespace NetAdmin.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// 仓储服务基类
|
||||
/// </summary>
|
||||
/// <typeparam name="TEntity">实体类型</typeparam>
|
||||
/// <typeparam name="TLogger">日志类型</typeparam>
|
||||
public abstract class RepositoryService<TEntity, TLogger> : ServiceBase<TLogger>
|
||||
where TEntity : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="RepositoryService{TEntity, TLogger}" /> class.
|
||||
/// </summary>
|
||||
protected RepositoryService(DefaultRepository<TEntity> rpo) //
|
||||
{
|
||||
Rpo = rpo;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 默认仓储
|
||||
/// </summary>
|
||||
protected DefaultRepository<TEntity> Rpo { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 启用级联保存
|
||||
/// </summary>
|
||||
protected bool EnableCascadeSave {
|
||||
get => Rpo.DbContextOptions.EnableCascadeSave;
|
||||
set => Rpo.DbContextOptions.EnableCascadeSave = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 针对 Sqlite 数据的更新操作
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// 非 Sqlite 数据库请删除
|
||||
/// </returns>
|
||||
protected abstract Task<TEntity> UpdateForSqliteAsync(TEntity req);
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="$(SolutionDir)/code.quality.props"/>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../NetAdmin.SysComponent.Application/NetAdmin.SysComponent.Application.csproj"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,7 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="$(SolutionDir)/code.quality.props"/>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../NetAdmin.SysComponent.Cache/NetAdmin.SysComponent.Cache.csproj"/>
|
||||
<ProjectReference Include="../NetAdmin.BizServer.Application/NetAdmin.BizServer.Application.csproj"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,66 +0,0 @@
|
||||
namespace NetAdmin.BizServer.Host.Extensions;
|
||||
|
||||
/// <summary>
|
||||
/// ApplicationBuilder对象 扩展方法
|
||||
/// </summary>
|
||||
[SuppressSniffer]
|
||||
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class IApplicationBuilderExtensions
|
||||
{
|
||||
private const string _INDEX_HTML_PATH = ".index.html";
|
||||
private const string _RES_PFX = $"{nameof(NetAdmin)}.{nameof(BizServer)}.{nameof(Host)}.UI";
|
||||
private static readonly Regex _regex = new(@"\.(\w+)$", RegexOptions.Compiled);
|
||||
private static IEnumerable<string> _allResNames;
|
||||
|
||||
/// <summary>
|
||||
/// 托管管理后台
|
||||
/// </summary>
|
||||
public static IApplicationBuilder UseVueAdmin(this IApplicationBuilder me)
|
||||
{
|
||||
if (Assembly.GetExecutingAssembly().GetManifestResourceInfo(_RES_PFX + _INDEX_HTML_PATH) == null) {
|
||||
return me;
|
||||
}
|
||||
|
||||
_allResNames = Assembly.GetExecutingAssembly()
|
||||
.GetManifestResourceNames()
|
||||
.Where(x => x.StartsWith(_RES_PFX, StringComparison.OrdinalIgnoreCase))
|
||||
.Select(x => x[_RES_PFX.Length..]);
|
||||
|
||||
return me.Use(UseVueAdminAsync);
|
||||
}
|
||||
|
||||
private static Stream GetManifestResourceStream(string path)
|
||||
{
|
||||
return Assembly.GetExecutingAssembly().GetManifestResourceStream(_RES_PFX + path);
|
||||
}
|
||||
|
||||
private static async Task UseVueAdminAsync(HttpContext context, Func<Task> next)
|
||||
{
|
||||
if (!context.Request.Path.StartsWithSegments(new PathString("/api"))) {
|
||||
var path = context.Request.Path.Value;
|
||||
if (path == "/" || path?.Length == 0) {
|
||||
path = _INDEX_HTML_PATH;
|
||||
}
|
||||
|
||||
path = path!.Replace('/', '.');
|
||||
|
||||
var output = GetManifestResourceStream(path);
|
||||
if (output == null) {
|
||||
var resName = _allResNames.FirstOrDefault(x => path.EndsWith(x, StringComparison.OrdinalIgnoreCase));
|
||||
output = resName == null
|
||||
? GetManifestResourceStream(_INDEX_HTML_PATH)
|
||||
: GetManifestResourceStream(resName);
|
||||
}
|
||||
|
||||
if (output != null) {
|
||||
context.Response.ContentLength = output.Length;
|
||||
context.Response.ContentType = MimeTypeHelper.GetMimeTypeByExtName(_regex.Match(path!).Groups[1].Value);
|
||||
await output.CopyToAsync(context.Response.Body);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
await next.Invoke();
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<Import Project="$(SolutionDir)/code.quality.props"/>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="$(SolutionDir)/assets/captcha/**" LinkBase="Assets/Captcha"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../NetAdmin.SysComponent.Host/NetAdmin.SysComponent.Host.csproj"/>
|
||||
<ProjectReference Include="../NetAdmin.BizServer.Cache/NetAdmin.BizServer.Cache.csproj"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Update="*.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="../../../dist/frontend/admin/**/*" LinkBase="UI"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,71 +0,0 @@
|
||||
using NetAdmin.BizServer.Host.Extensions;
|
||||
using NetAdmin.Host.Extensions;
|
||||
using NetAdmin.Host.Middlewares;
|
||||
#if !DEBUG
|
||||
using Prometheus;
|
||||
#endif
|
||||
|
||||
namespace NetAdmin.BizServer.Host;
|
||||
|
||||
/// <summary>
|
||||
/// 启动类
|
||||
/// </summary>
|
||||
public sealed class Startup : NetAdmin.Host.Startup
|
||||
{
|
||||
/// <summary>
|
||||
/// 程序入口
|
||||
/// </summary>
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
ShowBanner();
|
||||
_ = Serve.Run(RunOptions.Default.WithArgs(args));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 配置应用程序中间件
|
||||
/// </summary>
|
||||
public void Configure(IApplicationBuilder app)
|
||||
{
|
||||
_ = app //
|
||||
.UseRealIp() // 使用RealIp中间件,用于获取真实客户端IP地址
|
||||
.EnableBuffering() // 启用请求体缓冲,允许多次读取请求体
|
||||
.UseMiddleware<RequestAuditMiddleware>() // 使用RequestAuditMiddleware中间件,执行请求审计
|
||||
#if DEBUG
|
||||
.UseOpenApiSkin() // 使用OpenApiSkin中间件(仅在调试模式下),提供Swagger UI皮肤
|
||||
#else
|
||||
.UseVueAdmin() // 托管管理后台,仅在非调试模式下
|
||||
.UseHttpMetrics() // 使用HttpMetrics中间件,启用HTTP性能监控
|
||||
#endif
|
||||
.UseInject(string.Empty) // 使用Inject中间件,Furion脚手架的依赖注入支持
|
||||
.UseUnifyResultStatusCodes() // 使用UnifyResultStatusCodes中间件,用于统一处理结果状态码
|
||||
.UseCorsAccessor() // 使用CorsAccessor中间件,启用跨域资源共享(CORS)支持
|
||||
.UseRouting() // 使用Routing中间件,配置路由映射
|
||||
.UseAuthentication() // 使用Authentication中间件,启用身份验证
|
||||
.UseAuthorization() // 使用Authorization中间件,启用授权
|
||||
.UseMiddleware<RemoveNullNodeMiddleware>() // 使用RemoveNullNodeMiddleware中间件,删除JSON中的空节点
|
||||
.UseEndpoints(); // 配置端点以处理请求
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 配置服务容器
|
||||
/// </summary>
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
_ = services.AddConsoleFormatter() // 添加控制台日志模板
|
||||
.AddAllOptions() // 添加配置项
|
||||
.AddJwt() // 添加 Jwt 授权处理器
|
||||
.AddSnowflake() // 添加雪花编号生成器
|
||||
.AddEventBus() // 添加事件总线
|
||||
.AddFreeSql() // 添加 freeSql
|
||||
.AddRemoteRequest() // 添加远程请求
|
||||
.AddCorsAccessor() // 添加支持跨域访问
|
||||
.AddContextUser() // 添加上下文用户
|
||||
.AddRedisCache() // 添加 Redis 缓存
|
||||
|
||||
// IMvcBuilder
|
||||
.AddControllers() // 添加控制器
|
||||
.AddJsonSerializer(true) // 添加JSON序列化器,并设置显示枚举名而非数字枚举值
|
||||
.AddDefaultApiResultHandler() // 添加默认的API结果处理程序
|
||||
;
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1,47 +0,0 @@
|
||||
{
|
||||
"$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
|
||||
"SpecificationDocumentSettings": {
|
||||
"GroupOpenApiInfos": [
|
||||
{
|
||||
"Group": "Sys",
|
||||
"Title": "系统组件",
|
||||
"Description": "NetAdmin - 系统组件",
|
||||
},
|
||||
{
|
||||
"Group": "Biz",
|
||||
"Title": "业务服务",
|
||||
"Description": "NetAdmin - 业务服务",
|
||||
},
|
||||
{
|
||||
"Group": "Tpl",
|
||||
"Title": "示例服务",
|
||||
"Description": "NetAdmin - 示例服务",
|
||||
"Visible": false
|
||||
},
|
||||
{
|
||||
"Group": "Health",
|
||||
"Visible": false
|
||||
}
|
||||
],
|
||||
"SecurityDefinitions": [
|
||||
{
|
||||
"Id": "Bearer",
|
||||
"Type": "ApiKey",
|
||||
"Name": "Authorization",
|
||||
"Description": "JWT Authorization header using the Bearer scheme.",
|
||||
"BearerFormat": "JWT",
|
||||
"Scheme": "bearer",
|
||||
"In": "Header",
|
||||
"Requirement": {
|
||||
"Scheme": {
|
||||
"Reference": {
|
||||
"Id": "Bearer",
|
||||
"Type": "SecurityScheme"
|
||||
},
|
||||
"Accesses": []
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -1,172 +0,0 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Net.Http.Json;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using NetAdmin.BizServer.Host;
|
||||
using NetAdmin.Domain.Dto.Dependency;
|
||||
using NetAdmin.Domain.Dto.Sys.Api;
|
||||
using NetAdmin.Domain.Dto.Sys.Cache;
|
||||
using NetAdmin.Domain.Dto.Sys.Config;
|
||||
using NetAdmin.Domain.Dto.Sys.Tool;
|
||||
using NetAdmin.SysComponent.Application.Modules.Sys;
|
||||
using NetAdmin.Tests;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace NetAdmin.BizServer.Tests;
|
||||
|
||||
/// <summary>
|
||||
/// 所有测试
|
||||
/// </summary>
|
||||
[SuppressMessage("Usage", "xUnit1028:Test method must have valid return type")]
|
||||
public class AllTests(WebApplicationFactory<Startup> factory, ITestOutputHelper testOutputHelper) :
|
||||
WebApiTestBase<Startup>(factory, testOutputHelper), IToolsModule, ICacheModule, IApiModule, IConfigModule
|
||||
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public Task<int> BulkDeleteAsync(BulkReq<DelReq> req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
[Fact]
|
||||
public async Task<CacheStatisticsRsp> CacheStatisticsAsync()
|
||||
{
|
||||
var rsp = await PostAsync("/api/sys/cache/cache.statistics", null);
|
||||
Assert.Equal(HttpStatusCode.OK, rsp.StatusCode);
|
||||
return default;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<QueryConfigRsp> CreateAsync(CreateConfigReq req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<QueryApiRsp> CreateAsync(CreateApiReq req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<int> DeleteAsync(DelReq req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<bool> ExistAsync(QueryReq<QueryConfigReq> req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<bool> ExistAsync(QueryReq<QueryApiReq> req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
[Theory]
|
||||
[InlineData(default)]
|
||||
public async Task<PagedQueryRsp<GetAllEntriesRsp>> GetAllEntriesAsync(PagedQueryReq<GetAllEntriesReq> req)
|
||||
{
|
||||
var rsp = await PostAsync("/api/sys/cache/get.all.entries"
|
||||
, JsonContent.Create(new PagedQueryReq<GetAllEntriesReq>()));
|
||||
Assert.Equal(HttpStatusCode.OK, rsp.StatusCode);
|
||||
return default;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<QueryConfigRsp> GetAsync(QueryConfigReq req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<QueryApiRsp> GetAsync(QueryApiReq req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<QueryConfigRsp> GetLatestConfigAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<IEnumerable<GetModulesRsp>> GetModulesAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
[Fact]
|
||||
public async Task<DateTime> GetServerUtcTimeAsync()
|
||||
{
|
||||
var response = await PostAsync("/api/sys/tools/get.server.utc.time", null);
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
return default;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
[Fact]
|
||||
public async Task<string> GetVersionAsync()
|
||||
{
|
||||
var response = await PostAsync("/api/sys/tools/version", null);
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
return default;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<IEnumerable<(string Name, string Version)>> ModulesAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<PagedQueryRsp<QueryConfigRsp>> PagedQueryAsync(PagedQueryReq<QueryConfigReq> req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<PagedQueryRsp<QueryApiRsp>> PagedQueryAsync(PagedQueryReq<QueryApiReq> req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<IEnumerable<QueryConfigRsp>> QueryAsync(QueryReq<QueryConfigReq> req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<IEnumerable<QueryApiRsp>> QueryAsync(QueryReq<QueryApiReq> req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
[Fact]
|
||||
public async Task SyncAsync()
|
||||
{
|
||||
var response = await PostAsync("/api/sys/api/sync", null);
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<QueryConfigRsp> UpdateAsync(UpdateConfigReq req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<NopReq> UpdateAsync(NopReq req)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../NetAdmin.Tests/NetAdmin.Tests.csproj"/>
|
||||
<ProjectReference Include="../NetAdmin.BizServer.Host/NetAdmin.BizServer.Host.csproj"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0-preview-23531-01"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,25 +0,0 @@
|
||||
using NetAdmin.Application.Services;
|
||||
|
||||
namespace NetAdmin.Cache;
|
||||
|
||||
/// <summary>
|
||||
/// 缓存基类
|
||||
/// </summary>
|
||||
public abstract class CacheBase<TCacheContainer, TService> : ICache<TCacheContainer, TService>
|
||||
where TService : IService
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CacheBase{TCacheLoad, TService}" /> class.
|
||||
/// </summary>
|
||||
protected CacheBase(TCacheContainer cache, TService service)
|
||||
{
|
||||
Cache = cache;
|
||||
Service = service;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public TCacheContainer Cache { get; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public TService Service { get; }
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
using NetAdmin.Application.Services;
|
||||
|
||||
namespace NetAdmin.Cache;
|
||||
|
||||
/// <summary>
|
||||
/// 内存缓存
|
||||
/// </summary>
|
||||
public abstract class MemoryCache<TService> : CacheBase<IMemoryCache, TService>
|
||||
where TService : IService
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="MemoryCache{TService}" /> class.
|
||||
/// </summary>
|
||||
protected MemoryCache(IMemoryCache cache, TService service) //
|
||||
: base(cache, service) { }
|
||||
}
|
@ -1,113 +0,0 @@
|
||||
namespace NetAdmin.Domain.Contexts;
|
||||
|
||||
/// <summary>
|
||||
/// 上下文应用信息
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 签名算法: $"${appId}{appSecret.ToLowerInvariant()}{timestamp}{reqBody}".Md5(Encoding.UTF8);
|
||||
/// reqBody 需去除\r、\n、whitespace
|
||||
/// </remarks>
|
||||
public sealed record ContextApp : DataAbstraction, IValidatableObject
|
||||
{
|
||||
private const int _TS_OFFSET_SCOPE_SEC = 30;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ContextApp" /> class.
|
||||
/// </summary>
|
||||
public ContextApp(long appId, string appSecret, long timestamp)
|
||||
{
|
||||
AppId = appId;
|
||||
AppSecret = appSecret;
|
||||
Timestamp = timestamp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ContextApp" /> class.
|
||||
/// </summary>
|
||||
private ContextApp()
|
||||
{
|
||||
AppId = App.HttpContext.Request.Headers[nameof(AppId)].FirstOrDefault().Int64Try(0);
|
||||
AppSecret = App.HttpContext.Request.Headers[nameof(AppSecret)].FirstOrDefault();
|
||||
Sign = App.HttpContext.Request.Headers[nameof(Sign)].FirstOrDefault();
|
||||
Timestamp = App.HttpContext.Request.Headers[nameof(Timestamp)].FirstOrDefault().Int64Try(0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AppId
|
||||
/// </summary>
|
||||
[Range(1, long.MaxValue)]
|
||||
public long AppId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// AppSecret
|
||||
/// </summary>
|
||||
public string AppSecret { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 签名
|
||||
/// </summary>
|
||||
public string Sign { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间戳
|
||||
/// </summary>
|
||||
public long Timestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 从HttpContext 创建上下文应用
|
||||
/// </summary>
|
||||
public static async Task<ContextApp> CreateAsync()
|
||||
{
|
||||
var ret = new ContextApp();
|
||||
if (!ret.TryValidate().IsValid) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 具有secret的情况下,自动生成时间戳+sign,方便调试
|
||||
if (!ret.AppSecret.NullOrEmpty()) {
|
||||
ret.Timestamp = DateTime.Now.TimeUnixUtc();
|
||||
ret.Sign = await ret.BuildSignFromHttpContextAsync();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 构建签名
|
||||
/// </summary>
|
||||
public string BuildSign(string reqBody)
|
||||
{
|
||||
// 去除\r\n和空格再计算签名,规避风格样式问题
|
||||
reqBody = reqBody.Replace("\r", string.Empty).Replace("\n", string.Empty).Replace(" ", string.Empty);
|
||||
return $"{AppId}{AppSecret.ToLowerInvariant()}{Timestamp}{reqBody}".Md5(Encoding.UTF8);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 构建签名(从http上下文)
|
||||
/// </summary>
|
||||
public async Task<string> BuildSignFromHttpContextAsync()
|
||||
{
|
||||
var sr = new StreamReader(App.HttpContext.Request.Body);
|
||||
var reqBody = await sr.ReadToEndAsync();
|
||||
|
||||
_ = App.HttpContext.Request.Body.Seek(0, SeekOrigin.Begin);
|
||||
return BuildSign(reqBody);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||
{
|
||||
if (!AppSecret.NullOrEmpty()) {
|
||||
yield break;
|
||||
}
|
||||
|
||||
// 没有密码, 就要签名+时间戳
|
||||
if (Sign.NullOrEmpty()) {
|
||||
yield return new ValidationResult(Ln.签名缺失, new[] { nameof(Sign) });
|
||||
}
|
||||
|
||||
if (Math.Abs(DateTime.Now.TimeUnixUtc() - Timestamp) > _TS_OFFSET_SCOPE_SEC) {
|
||||
yield return new ValidationResult(Ln.时间戳缺失或误差过大, new[] { nameof(Timestamp) });
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace NetAdmin.Domain.DbMaps.Dependency;
|
||||
|
||||
/// <summary>
|
||||
/// 数据库实体基类
|
||||
/// </summary>
|
||||
public abstract record EntityBase : DataAbstraction;
|
@ -1,22 +0,0 @@
|
||||
namespace NetAdmin.Domain.DbMaps.Dependency.Fields;
|
||||
|
||||
/// <summary>
|
||||
/// 创建者客户端字段接口
|
||||
/// </summary>
|
||||
public interface IFieldCreatedClient
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建者客户端IP
|
||||
/// </summary>
|
||||
int? CreatedClientIp { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建者来源地址
|
||||
/// </summary>
|
||||
string CreatedReferer { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建者客户端用户代理
|
||||
/// </summary>
|
||||
string CreatedUserAgent { get; init; }
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
namespace NetAdmin.Domain.DbMaps.Dependency.Fields;
|
||||
|
||||
/// <summary>
|
||||
/// 主键字段接口
|
||||
/// </summary>
|
||||
public interface IFieldPrimary<T>
|
||||
{
|
||||
/// <summary>
|
||||
/// 唯一编码
|
||||
/// </summary>
|
||||
T Id { get; init; }
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user