diff --git a/NetAdmin.sln b/NetAdmin.sln
deleted file mode 100644
index d8ce465e..00000000
--- a/NetAdmin.sln
+++ /dev/null
@@ -1,249 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31903.59
-MinimumVisualStudioVersion = 10.0.40219.1
-
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".drone", ".drone", "{3E408077-E73E-45CE-A53A-EF5F9DAE4B46}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{BB5BB244-E7D2-4368-8C18-C1C0ED1E12D1}"
- ProjectSection(SolutionItems) = preProject
- README.md = .drone/workflows/README.md
- 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
- nightly-build.yml = .github/workflows/nightly-build.yml
- README.md = .github/workflows/README.md
- release.yml = .github/workflows/release.yml
- EndProjectSection
-EndProject
-
-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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker", "docker", "{E80A1018-C354-4A26-9029-8847BB9DA864}"
- ProjectSection(SolutionItems) = preProject
- README.md = docker/README.md
- EndProjectSection
-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
- .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("{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
- 5.git.update.submodule.ps1 = scripts/5.git.update.submodule.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}") = "src", "src", "{C84EB5A0-37AD-4B17-A51E-E36888C4441E}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "backend", "backend", "{4DAF9366-855F-46BB-AE4C-660C92FA0697}"
-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("{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}") = "Gurion", "refs\Gurion\src\Gurion\Gurion.csproj", "{CCD098FE-4F95-4FA4-8CC0-9A6DE921FBAE}"#refs
-##EndProject#refs
-##Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSql", "refs\NetAdmin.FreeSql\src\FreeSql\FreeSql.csproj", "{3C65DA42-877D-46FF-B754-C12214302A29}"#refs
-##EndProject#refs
-##Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSql.Provider.Sqlite", "refs\NetAdmin.FreeSql\src\FreeSql.Provider.Sqlite\FreeSql.Provider.Sqlite.csproj", "{CF5EFA63-4631-4A64-B4F3-98A7DD532F68}"#refs
-##EndProject#refs
-##Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSql.DbContext", "refs\NetAdmin.FreeSql\src\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
- {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
- {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
- ##{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}
- {932520DF-D312-415A-A128-1117F8221D68} = {12AE5B4B-CB1A-498E-83B8-04E201E31D86}
- {C3DE6F6A-D1FC-4B8E-9033-980FBEBBD2BA} = {12AE5B4B-CB1A-498E-83B8-04E201E31D86}
- {3C6F049E-3EE8-4D66-9AFF-E8A369032487} = {1129FE25-466B-4F4F-85FC-3752664245E1}
- {BB5BB244-E7D2-4368-8C18-C1C0ED1E12D1} = {3E408077-E73E-45CE-A53A-EF5F9DAE4B46}
- EndGlobalSection
-EndGlobal
\ No newline at end of file
diff --git a/NetAdmin.slnx b/NetAdmin.slnx
new file mode 100644
index 00000000..74c44d9b
--- /dev/null
+++ b/NetAdmin.slnx
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/NetAdmin.sln.DotSettings b/NetAdmin.slnx.DotSettings
similarity index 100%
rename from NetAdmin.sln.DotSettings
rename to NetAdmin.slnx.DotSettings
diff --git a/refs/Gurion b/refs/Gurion
index bbaea747..2f58f329 160000
--- a/refs/Gurion
+++ b/refs/Gurion
@@ -1 +1 @@
-Subproject commit bbaea747eb04dfeaeafe29cf0927664be6293b81
+Subproject commit 2f58f3291ae7a31bf935ed26d23fd587d181fb2b
diff --git a/refs/NetAdmin.FreeSql b/refs/NetAdmin.FreeSql
index 81b91335..f5509a75 160000
--- a/refs/NetAdmin.FreeSql
+++ b/refs/NetAdmin.FreeSql
@@ -1 +1 @@
-Subproject commit 81b9133557cb2bbde7c19bdced930c459f31ae4d
+Subproject commit f5509a75ffb26175f7024fb609579050f6f5250d
diff --git a/refs/ns-ext b/refs/ns-ext
index 890b2296..d4a92aca 160000
--- a/refs/ns-ext
+++ b/refs/ns-ext
@@ -1 +1 @@
-Subproject commit 890b229683208dd42db2d34cd29f0349e6c913cc
+Subproject commit d4a92aca6f18b68875126f1974baa15fd2ab1fab
diff --git a/scripts/code.clean.csx b/scripts/code.clean.csx
index cb98db8e..6f5e7239 100644
--- a/scripts/code.clean.csx
+++ b/scripts/code.clean.csx
@@ -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.slnx",
UseShellExecute = false,
RedirectStandardOutput = true
}
diff --git a/scripts/code.clean.ps1 b/scripts/code.clean.ps1
index 1cbccd14..349bc54d 100644
--- a/scripts/code.clean.ps1
+++ b/scripts/code.clean.ps1
@@ -1,7 +1,7 @@
#!/usr/bin/env pwsh
npm --prefix ../src/frontend/admin run prettier
-jb cleanupcode --no-build --include=$($(git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") }) -join ";") ../NetAdmin.sln
+jb cleanupcode --no-build --include=$( $( git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") } ) -join ";" ) ../NetAdmin.slnx
dot rbom -w -e refs -e .git -e node_modules ../
dot trim -w -e refs -e .git -e node_modules ../
dot tolf -w -e refs -e .git -e node_modules ../
\ No newline at end of file
diff --git a/scripts/resharper.full.ps1 b/scripts/resharper.full.ps1
index 4644a2e7..c2410113 100644
--- a/scripts/resharper.full.ps1
+++ b/scripts/resharper.full.ps1
@@ -1,3 +1,3 @@
#!/usr/bin/env pwsh
-jb cleanupcode --no-build ../NetAdmin.sln
\ No newline at end of file
+jb cleanupcode --no-build ../NetAdmin.slnx
\ No newline at end of file
diff --git a/scripts/switch.nuget.or.project.csx b/scripts/switch.nuget.or.project.csx
index 57ad4290..36f4874a 100644
--- a/scripts/switch.nuget.or.project.csx
+++ b/scripts/switch.nuget.or.project.csx
@@ -5,18 +5,13 @@ while (!new[] { "1", "2" }.Contains(input))
Console.WriteLine("1.nuget 2.project");
input = Console.ReadLine();
}
-var slnFile = Directory.GetFiles(@"../", "*.sln").First();
+var slnxFile = Directory.GetFiles(@"../", "*.slnx").First();
var csprojFiles = Directory.GetFiles(@"../src", "*.csproj", new EnumerationOptions { RecurseSubdirectories = true });
-var slnContent = File.ReadAllText(slnFile);
+var slnContent = File.ReadAllText(slnxFile);
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}.");
- }
+ slnContent = Regex.Replace(slnContent, "", "");
foreach (var csprojFile in csprojFiles)
{
var csprojContent = File.ReadAllText(csprojFile);
@@ -27,7 +22,7 @@ if (input == "1")
}
else
{
- slnContent = Regex.Replace(slnContent, "##", "");
+ slnContent = Regex.Replace(slnContent, "", "$1");
foreach (var csprojFile in csprojFiles)
{
var csprojContent = File.ReadAllText(csprojFile);
@@ -39,4 +34,4 @@ else
Console.WriteLine(slnContent);
-File.WriteAllText(slnFile, slnContent);
\ No newline at end of file
+File.WriteAllText(slnxFile, slnContent);
\ No newline at end of file
diff --git a/scripts/sync.sln.files.csx b/scripts/sync.sln.files.csx
deleted file mode 100644
index fc7db233..00000000
--- a/scripts/sync.sln.files.csx
+++ /dev/null
@@ -1,91 +0,0 @@
-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}\"\\) = \"workflows\", \"workflows\", \"{BB5BB244-E7D2-4368-8C18-C1C0ED1E12D1}\"(?:.|\n)*?EndProject",
- $$"""
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{BB5BB244-E7D2-4368-8C18-C1C0ED1E12D1}"
- ProjectSection(SolutionItems) = preProject
-{{string.Join('\n',
- Directory.GetFiles(@"../.drone/workflows", "*")
- .Select(x=>$" {Path.GetFileName(x)} = .drone/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);
\ No newline at end of file
diff --git a/scripts/sync.slnx.files.csx b/scripts/sync.slnx.files.csx
new file mode 100644
index 00000000..84a94b83
--- /dev/null
+++ b/scripts/sync.slnx.files.csx
@@ -0,0 +1,87 @@
+using System.Text.RegularExpressions;
+
+var slnxFile = Directory.GetFiles(@"../", "*.slnx").First();
+var content = File.ReadAllText(slnxFile);
+
+content = Regex.Replace(
+ content,
+ "(?:.|\n)*?",
+ $$"""
+
+{{string.Join('\n',
+ Directory.GetFiles(@"../", "*").Where(x => !x.EndsWith(".slnx") && !x.EndsWith(".user"))
+ .Select(x=>$" ")
+ )}}
+
+"""
+);
+
+content = Regex.Replace(
+ content,
+ "(?:.|\n)*?",
+ $$"""
+
+{{string.Join('\n',
+ Directory.GetFiles(@"../docker", "*")
+ .Select(x=>$" ")
+ )}}
+
+"""
+);
+
+content = Regex.Replace(
+ content,
+ "(?:.|\n)*?",
+ $$"""
+
+{{string.Join('\n',
+ Directory.GetFiles(@"../.github/workflows", "*")
+ .Select(x=>$" ")
+ )}}
+
+"""
+);
+
+content = Regex.Replace(
+ content,
+ "(?:.|\n)*?",
+ $$"""
+
+{{string.Join('\n',
+ Directory.GetFiles(@"../.drone/workflows", "*")
+ .Select(x=>$" ")
+ )}}
+
+"""
+);
+
+content = Regex.Replace(
+ content,
+ "(?:.|\n)*?",
+ $$"""
+
+{{string.Join('\n',
+ Directory.GetFiles(@"../scripts", "*")
+ .Select(x=>$" ")
+ )}}
+
+"""
+);
+
+
+
+content = Regex.Replace(
+ content,
+ "(?:.|\n)*?",
+ $$"""
+
+{{string.Join('\n',
+ Directory.GetFiles(@"../build", "*")
+ .Select(x=>$" ")
+ )}}
+
+"""
+);
+
+Console.WriteLine(content);
+File.WriteAllText(slnxFile, content);
\ No newline at end of file
diff --git a/src/backend/NetAdmin/NetAdmin.Cache/ICache.cs b/src/backend/NetAdmin/NetAdmin.Cache/ICache.cs
index 092f8efd..875de7ac 100644
--- a/src/backend/NetAdmin/NetAdmin.Cache/ICache.cs
+++ b/src/backend/NetAdmin/NetAdmin.Cache/ICache.cs
@@ -16,5 +16,5 @@ public interface ICache
///
/// 关联的服务
///
- public TService Service { get; }
+ TService Service { get; }
}
\ No newline at end of file
diff --git a/src/backend/NetAdmin/NetAdmin.Infrastructure/EventBus/IEventData.cs b/src/backend/NetAdmin/NetAdmin.Infrastructure/EventBus/IEventData.cs
index f9505021..b98a42a1 100644
--- a/src/backend/NetAdmin/NetAdmin.Infrastructure/EventBus/IEventData.cs
+++ b/src/backend/NetAdmin/NetAdmin.Infrastructure/EventBus/IEventData.cs
@@ -8,10 +8,10 @@ public interface IEventData
///
/// 事件发生时间
///
- public DateTime CreatedTime { get; init; }
+ DateTime CreatedTime { get; init; }
///
/// 负载
///
- public T PayLoad { get; init; }
+ T PayLoad { get; init; }
}
\ No newline at end of file
diff --git a/src/backend/NetAdmin/NetAdmin.Infrastructure/Utils/FreeSqlBuilder.cs b/src/backend/NetAdmin/NetAdmin.Infrastructure/Utils/FreeSqlBuilder.cs
index e5e58b8e..8df855ad 100644
--- a/src/backend/NetAdmin/NetAdmin.Infrastructure/Utils/FreeSqlBuilder.cs
+++ b/src/backend/NetAdmin/NetAdmin.Infrastructure/Utils/FreeSqlBuilder.cs
@@ -58,7 +58,7 @@ public sealed class FreeSqlBuilder(DatabaseOptions databaseOptions)
{
return typeof(IBaseRepository<>).MakeGenericType(entityType)
.GetMethod( //
- nameof(IBaseRepository.Insert) //
+ nameof(IBaseRepository<>.Insert) //
, BindingFlags.Public | BindingFlags.Instance //
, null //
, CallingConventions.Any //
@@ -119,7 +119,7 @@ public sealed class FreeSqlBuilder(DatabaseOptions databaseOptions)
// 如果表存在数据,跳过
var select = typeof(IFreeSql).GetMethod(nameof(freeSql.Select), 1, Type.EmptyTypes)?.MakeGenericMethod(entityType).Invoke(freeSql, null);
- if (select?.GetType().GetMethod(nameof(ISelect.Any), 0, Type.EmptyTypes)?.Invoke(select, null) as bool? ?? true) {
+ if (select?.GetType().GetMethod(nameof(ISelect<>.Any), 0, Type.EmptyTypes)?.Invoke(select, null) as bool? ?? true) {
continue;
}
diff --git a/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Modules/Sys/IApiModule.cs b/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Modules/Sys/IApiModule.cs
index 4e6ed80f..264454dd 100644
--- a/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Modules/Sys/IApiModule.cs
+++ b/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Modules/Sys/IApiModule.cs
@@ -14,7 +14,7 @@ public interface IApiModule : ICrudModule
/// 平面查询接口
///
- public Task> PlainQueryAsync(QueryReq req);
+ Task> PlainQueryAsync(QueryReq req);
///
/// 同步接口
diff --git a/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IApiService.cs b/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IApiService.cs
index be68832f..726fa1d6 100644
--- a/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IApiService.cs
+++ b/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IApiService.cs
@@ -10,7 +10,7 @@ public interface IApiService : IService, IApiModule
///
/// 接口是否存在
///
- public Task ExistAsync(QueryReq req);
+ Task ExistAsync(QueryReq req);
///
/// 反射接口列表
diff --git a/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserService.cs b/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserService.cs
index 061db609..1984df08 100644
--- a/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserService.cs
+++ b/src/backend/NetAdmin/NetAdmin.SysComponent.Application/Services/Sys/Dependency/IUserService.cs
@@ -10,7 +10,7 @@ public interface IUserService : IService, IUserModule
///
/// 用户是否存在
///
- public Task ExistAsync(QueryReq req);
+ Task ExistAsync(QueryReq req);
///
/// 用户编号登录