diff --git a/aspnet-core/templates/PackageName.CompanyName.ProjectName.csproj b/aspnet-core/templates/PackageName.CompanyName.ProjectName.csproj new file mode 100644 index 000000000..2b3a05941 --- /dev/null +++ b/aspnet-core/templates/PackageName.CompanyName.ProjectName.csproj @@ -0,0 +1,30 @@ + + + net8.0 + true + LINGYUN.Abp.MicroService.Templates + 8.1.1 + colin.in@foxmail.com + Abp framework micro-service template + MIT + false + https://github.com/colinin/abp-next-admin + micro webapi cloud + Template + git + https://github.com/colinin/abp-next-admin + true + true + true + true + False + False + + + + + true + content + + + \ No newline at end of file diff --git a/aspnet-core/templates/content/.template.config/template.json b/aspnet-core/templates/content/.template.config/template.json index eb4dd8be8..132f70183 100644 --- a/aspnet-core/templates/content/.template.config/template.json +++ b/aspnet-core/templates/content/.template.config/template.json @@ -11,6 +11,15 @@ "language": "C#", "type": "project" }, + "sources": [ + { + "modifiers": [ + { + "exclude": [ "**/[Bb]in/**", "**/[Oo]bj/**", "**/[Ll]ocalNuget/**" , ".template.config/**/*", ".vs/**/*"] + } + ] + } + ], "sourceName": "ProjectName", "preferNameDirectory": true, "symbols": { diff --git a/aspnet-core/templates/content/Directory.Build.props b/aspnet-core/templates/content/Directory.Build.props index 80fddb3fd..a9ca45ada 100644 --- a/aspnet-core/templates/content/Directory.Build.props +++ b/aspnet-core/templates/content/Directory.Build.props @@ -1,48 +1,13 @@ - + - 8.0.3 - 3.0.0 - 8.0.3 - 1.12.0 - 1.0.2 - 8.0.0 - 2.11.0 - 1.5.10 - 2.13.0 - 3.0.712 - 1.6.9 - 2.0.3 - 1.8.6 - 7.15.1 - 13.0.1 - 1.0.0-rc8 - 1.3.1 - 1.0.0-rc8 - 1.0.0-rc8 - 1.0.0-beta2 - 3.7.0 - 2.7.4 - 3.1.1 - 8.0.0 - 2.3.0 - 2.0.0 - 2.0.2 - 3.1.0 - 8.0.0 - 8.0.0 - 5.0.0 - 9.0.3 - 5.0.0 - 2.0.1 - 6.5.0 - 8.2.0 - 8.0.* - 8.0.0 - 2.6.1 - 2.5.5 - 4.2.1 - 5.1.0 - 17.8.0 - 3.0.2 - - \ No newline at end of file + true + + + + + all + runtime; build; native; contentfiles; analyzers + + + + diff --git a/aspnet-core/templates/content/Directory.Packages.props b/aspnet-core/templates/content/Directory.Packages.props new file mode 100644 index 000000000..f275d61b8 --- /dev/null +++ b/aspnet-core/templates/content/Directory.Packages.props @@ -0,0 +1,293 @@ + + + 8.1.1 + 2.14.1 + 8.1.1 + 8.1.1 + 8.0.0 + 8.0.0 + 8.0.0 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/aspnet-core/templates/content/NuGet.Config b/aspnet-core/templates/content/NuGet.Config new file mode 100644 index 000000000..8ed44e75a --- /dev/null +++ b/aspnet-core/templates/content/NuGet.Config @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln b/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln index baccd1688..f66e0df1f 100644 --- a/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln +++ b/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln @@ -5,32 +5,15 @@ VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Domain.Shared", "src\PackageName.CompanyName.ProjectName.Domain.Shared\PackageName.CompanyName.ProjectName.Domain.Shared.csproj", "{FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Domain", "src\PackageName.CompanyName.ProjectName.Domain\PackageName.CompanyName.ProjectName.Domain.csproj", "{9C2828F2-1377-4597-B2B5-A34F1A012D54}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Application.Contracts", "src\PackageName.CompanyName.ProjectName.Application.Contracts\PackageName.CompanyName.ProjectName.Application.Contracts.csproj", "{4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Application", "src\PackageName.CompanyName.ProjectName.Application\PackageName.CompanyName.ProjectName.Application.csproj", "{92140C62-7366-4EBB-986C-97148A529689}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.EntityFrameworkCore", "src\PackageName.CompanyName.ProjectName.EntityFrameworkCore\PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj", "{164A4539-C9D1-4F2D-9892-9AFA4A124DEE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Dapr.Client", "src\PackageName.CompanyName.ProjectName.Dapr.Client\PackageName.CompanyName.ProjectName.Dapr.Client.csproj", "{613503F5-87BE-4D56-8C3E-6CBD30C121ED}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi", "src\PackageName.CompanyName.ProjectName.HttpApi\PackageName.CompanyName.ProjectName.HttpApi.csproj", "{DF766347-1C80-4025-8E45-3CDFC95C7CCA}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi.Host", "host\PackageName.CompanyName.ProjectName.HttpApi.Host\PackageName.CompanyName.ProjectName.HttpApi.Host.csproj", "{31E33CE2-71D3-43FF-9A30-2DCC82C607AE}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi.Client", "src\PackageName.CompanyName.ProjectName.HttpApi.Client\PackageName.CompanyName.ProjectName.HttpApi.Client.csproj", "{6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.SettingManagement", "src\PackageName.CompanyName.ProjectName.SettingManagement\PackageName.CompanyName.ProjectName.SettingManagement.csproj", "{42C88D57-66A1-4B02-AFEA-17421C5EEC97}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Solution Items", ".Solution Items", "{C9675742-7986-4BC1-9781-FD1C3C5B6287}" ProjectSection(SolutionItems) = preProject common.props = common.props configureawait.props = configureawait.props Directory.Build.props = Directory.Build.props - ..\..\NuGet.Config = ..\..\NuGet.Config + Directory.Packages.props = Directory.Packages.props + NuGet.Config = NuGet.Config EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{4786387C-C1C5-46F8-806F-EBC54DB0A4FA}" @@ -49,52 +32,34 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.Pro EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "migrations", "migrations", "{2BF87FAA-69E7-486E-9123-1F407A2BB633}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Domain.Shared", "src\PackageName.CompanyName.ProjectName.Domain.Shared\PackageName.CompanyName.ProjectName.Domain.Shared.csproj", "{77090F97-BD80-4469-842F-F5769CF849E9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Domain", "src\PackageName.CompanyName.ProjectName.Domain\PackageName.CompanyName.ProjectName.Domain.csproj", "{DF2CCF03-95D5-4BE4-8B32-742818C56F15}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Application.Contracts", "src\PackageName.CompanyName.ProjectName.Application.Contracts\PackageName.CompanyName.ProjectName.Application.Contracts.csproj", "{54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Application", "src\PackageName.CompanyName.ProjectName.Application\PackageName.CompanyName.ProjectName.Application.csproj", "{F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Dapr.Client", "src\PackageName.CompanyName.ProjectName.Dapr.Client\PackageName.CompanyName.ProjectName.Dapr.Client.csproj", "{B69F04FF-8505-49F6-9B60-BB800846C87C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.EntityFrameworkCore", "src\PackageName.CompanyName.ProjectName.EntityFrameworkCore\PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj", "{09CA7186-DBA7-4428-A1ED-31292AC02050}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi", "src\PackageName.CompanyName.ProjectName.HttpApi\PackageName.CompanyName.ProjectName.HttpApi.csproj", "{FDB3A3E9-C072-438D-8B8D-2AA957C1167F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi.Client", "src\PackageName.CompanyName.ProjectName.HttpApi.Client\PackageName.CompanyName.ProjectName.HttpApi.Client.csproj", "{8CE7C515-CD78-42D4-A9D7-39D217A3D046}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.SettingManagement", "src\PackageName.CompanyName.ProjectName.SettingManagement\PackageName.CompanyName.ProjectName.SettingManagement.csproj", "{CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}.Release|Any CPU.Build.0 = Release|Any CPU - {9C2828F2-1377-4597-B2B5-A34F1A012D54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9C2828F2-1377-4597-B2B5-A34F1A012D54}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9C2828F2-1377-4597-B2B5-A34F1A012D54}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9C2828F2-1377-4597-B2B5-A34F1A012D54}.Release|Any CPU.Build.0 = Release|Any CPU - {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}.Release|Any CPU.Build.0 = Release|Any CPU - {92140C62-7366-4EBB-986C-97148A529689}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92140C62-7366-4EBB-986C-97148A529689}.Debug|Any CPU.Build.0 = Debug|Any CPU - {92140C62-7366-4EBB-986C-97148A529689}.Release|Any CPU.ActiveCfg = Release|Any CPU - {92140C62-7366-4EBB-986C-97148A529689}.Release|Any CPU.Build.0 = Release|Any CPU - {164A4539-C9D1-4F2D-9892-9AFA4A124DEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {164A4539-C9D1-4F2D-9892-9AFA4A124DEE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {164A4539-C9D1-4F2D-9892-9AFA4A124DEE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {164A4539-C9D1-4F2D-9892-9AFA4A124DEE}.Release|Any CPU.Build.0 = Release|Any CPU - {613503F5-87BE-4D56-8C3E-6CBD30C121ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {613503F5-87BE-4D56-8C3E-6CBD30C121ED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {613503F5-87BE-4D56-8C3E-6CBD30C121ED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {613503F5-87BE-4D56-8C3E-6CBD30C121ED}.Release|Any CPU.Build.0 = Release|Any CPU - {DF766347-1C80-4025-8E45-3CDFC95C7CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DF766347-1C80-4025-8E45-3CDFC95C7CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DF766347-1C80-4025-8E45-3CDFC95C7CCA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DF766347-1C80-4025-8E45-3CDFC95C7CCA}.Release|Any CPU.Build.0 = Release|Any CPU {31E33CE2-71D3-43FF-9A30-2DCC82C607AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {31E33CE2-71D3-43FF-9A30-2DCC82C607AE}.Debug|Any CPU.Build.0 = Debug|Any CPU {31E33CE2-71D3-43FF-9A30-2DCC82C607AE}.Release|Any CPU.ActiveCfg = Release|Any CPU {31E33CE2-71D3-43FF-9A30-2DCC82C607AE}.Release|Any CPU.Build.0 = Release|Any CPU - {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}.Release|Any CPU.Build.0 = Release|Any CPU - {42C88D57-66A1-4B02-AFEA-17421C5EEC97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {42C88D57-66A1-4B02-AFEA-17421C5EEC97}.Debug|Any CPU.Build.0 = Debug|Any CPU - {42C88D57-66A1-4B02-AFEA-17421C5EEC97}.Release|Any CPU.ActiveCfg = Release|Any CPU - {42C88D57-66A1-4B02-AFEA-17421C5EEC97}.Release|Any CPU.Build.0 = Release|Any CPU {9262FE7A-76B2-424F-8C34-AFA1D95D7E5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9262FE7A-76B2-424F-8C34-AFA1D95D7E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU {9262FE7A-76B2-424F-8C34-AFA1D95D7E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -115,26 +80,62 @@ Global {F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E}.Debug|Any CPU.Build.0 = Debug|Any CPU {F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E}.Release|Any CPU.ActiveCfg = Release|Any CPU {F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E}.Release|Any CPU.Build.0 = Release|Any CPU + {77090F97-BD80-4469-842F-F5769CF849E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {77090F97-BD80-4469-842F-F5769CF849E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {77090F97-BD80-4469-842F-F5769CF849E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {77090F97-BD80-4469-842F-F5769CF849E9}.Release|Any CPU.Build.0 = Release|Any CPU + {DF2CCF03-95D5-4BE4-8B32-742818C56F15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF2CCF03-95D5-4BE4-8B32-742818C56F15}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF2CCF03-95D5-4BE4-8B32-742818C56F15}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF2CCF03-95D5-4BE4-8B32-742818C56F15}.Release|Any CPU.Build.0 = Release|Any CPU + {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}.Release|Any CPU.Build.0 = Release|Any CPU + {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}.Release|Any CPU.Build.0 = Release|Any CPU + {B69F04FF-8505-49F6-9B60-BB800846C87C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B69F04FF-8505-49F6-9B60-BB800846C87C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B69F04FF-8505-49F6-9B60-BB800846C87C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B69F04FF-8505-49F6-9B60-BB800846C87C}.Release|Any CPU.Build.0 = Release|Any CPU + {09CA7186-DBA7-4428-A1ED-31292AC02050}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {09CA7186-DBA7-4428-A1ED-31292AC02050}.Debug|Any CPU.Build.0 = Debug|Any CPU + {09CA7186-DBA7-4428-A1ED-31292AC02050}.Release|Any CPU.ActiveCfg = Release|Any CPU + {09CA7186-DBA7-4428-A1ED-31292AC02050}.Release|Any CPU.Build.0 = Release|Any CPU + {FDB3A3E9-C072-438D-8B8D-2AA957C1167F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FDB3A3E9-C072-438D-8B8D-2AA957C1167F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FDB3A3E9-C072-438D-8B8D-2AA957C1167F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FDB3A3E9-C072-438D-8B8D-2AA957C1167F}.Release|Any CPU.Build.0 = Release|Any CPU + {8CE7C515-CD78-42D4-A9D7-39D217A3D046}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8CE7C515-CD78-42D4-A9D7-39D217A3D046}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8CE7C515-CD78-42D4-A9D7-39D217A3D046}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8CE7C515-CD78-42D4-A9D7-39D217A3D046}.Release|Any CPU.Build.0 = Release|Any CPU + {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} - {9C2828F2-1377-4597-B2B5-A34F1A012D54} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} - {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} - {92140C62-7366-4EBB-986C-97148A529689} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} - {164A4539-C9D1-4F2D-9892-9AFA4A124DEE} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} - {613503F5-87BE-4D56-8C3E-6CBD30C121ED} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} - {DF766347-1C80-4025-8E45-3CDFC95C7CCA} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} {31E33CE2-71D3-43FF-9A30-2DCC82C607AE} = {4786387C-C1C5-46F8-806F-EBC54DB0A4FA} - {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} - {42C88D57-66A1-4B02-AFEA-17421C5EEC97} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} {9262FE7A-76B2-424F-8C34-AFA1D95D7E5A} = {A9CB1547-1C2C-4A23-82EC-C834C1626E0A} {A0D1F8A4-3494-4E26-9E2D-DB874B93DBCE} = {A9CB1547-1C2C-4A23-82EC-C834C1626E0A} {0B2E1C9E-092D-4E5F-BE9F-5506E689FC85} = {A9CB1547-1C2C-4A23-82EC-C834C1626E0A} {4A9D43A2-D08B-40E8-9C74-F2B95BF81AED} = {A9CB1547-1C2C-4A23-82EC-C834C1626E0A} {F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E} = {2BF87FAA-69E7-486E-9123-1F407A2BB633} + {77090F97-BD80-4469-842F-F5769CF849E9} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} + {DF2CCF03-95D5-4BE4-8B32-742818C56F15} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} + {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} + {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} + {B69F04FF-8505-49F6-9B60-BB800846C87C} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} + {09CA7186-DBA7-4428-A1ED-31292AC02050} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} + {FDB3A3E9-C072-438D-8B8D-2AA957C1167F} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} + {8CE7C515-CD78-42D4-A9D7-39D217A3D046} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} + {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {62C0F185-E2C2-46A2-B4B2-5E703E25849E} diff --git a/aspnet-core/templates/content/common.props b/aspnet-core/templates/content/common.props index dd612d1c6..65492c743 100644 --- a/aspnet-core/templates/content/common.props +++ b/aspnet-core/templates/content/common.props @@ -1,23 +1,22 @@ - - latest - 8.0.3 - colin - $(NoWarn);CS1591;CS0436;CS8618;NU1803 - https://github.com/colinin/abp-next-admin - MIT - git - https://github.com/colinin/abp-next-admin - true - true - false - content - + + latest + 8.1.1 + colin + $(NoWarn);CS1591;CS0436;CS8618;NU1803 + https://github.com/colinin/abp-next-admin + $(SolutionDir)LocalNuget + 8.1.1 + MIT + git + https://github.com/colinin/abp-next-admin + true + - - - - + + + + @@ -26,19 +25,19 @@ - - - - + + + + - - - - + + + + - - $(SolutionDir)LocalNuget - + + $(SolutionDir)LocalNuget + \ No newline at end of file diff --git a/aspnet-core/templates/content/configureawait.props b/aspnet-core/templates/content/configureawait.props index 2e04405b2..3caa88c04 100644 --- a/aspnet-core/templates/content/configureawait.props +++ b/aspnet-core/templates/content/configureawait.props @@ -1,7 +1,7 @@ - - + + All runtime; build; native; contentfiles; analyzers diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/DbMigratorHostedService.cs b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/DbMigratorHostedService.cs index b61e0dc04..122c8201f 100644 --- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/DbMigratorHostedService.cs +++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/DbMigratorHostedService.cs @@ -34,7 +34,7 @@ public class DbMigratorHostedService : IHostedService await application .ServiceProvider .GetRequiredService() - .MigrateAsync(); + .CheckAndApplyDatabaseMigrationsAsync(); await application.ShutdownAsync(); diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj index 67783e37f..b125867ab 100644 --- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj +++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj @@ -11,21 +11,21 @@ - - - - - + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - + + + + + + + diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs deleted file mode 100644 index 1c6f1aae7..000000000 --- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs +++ /dev/null @@ -1,81 +0,0 @@ -using PackageName.CompanyName.ProjectName.EntityFrameworkCore; -using LINGYUN.Abp.Data.DbMigrator; -using LINGYUN.Abp.MultiTenancy; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; -using System.Threading.Tasks; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.EventBus.Distributed; -using Volo.Abp.MultiTenancy; -using Volo.Abp.Uow; - -namespace PackageName.CompanyName.ProjectName.EventBus.Handlers; - -public class TenantSynchronizer : - IDistributedEventHandler, - ITransientDependency -{ - protected IDataSeeder DataSeeder { get; } - protected ICurrentTenant CurrentTenant { get; } - protected IDbSchemaMigrator DbSchemaMigrator { get; } - protected IUnitOfWorkManager UnitOfWorkManager { get; } - - protected ILogger Logger { get; } - - public TenantSynchronizer( - IDataSeeder dataSeeder, - ICurrentTenant currentTenant, - IDbSchemaMigrator dbSchemaMigrator, - IUnitOfWorkManager unitOfWorkManager, - ILogger logger) - { - DataSeeder = dataSeeder; - CurrentTenant = currentTenant; - DbSchemaMigrator = dbSchemaMigrator; - UnitOfWorkManager = unitOfWorkManager; - - Logger = logger; - } - - /// - /// 租户创建之后需要预置种子数据 - /// - /// - /// - public virtual async Task HandleEventAsync(CreateEventData eventData) - { - using (var unitOfWork = UnitOfWorkManager.Begin()) - { - using (CurrentTenant.Change(eventData.Id, eventData.Name)) - { - Logger.LogInformation("Migrating the new tenant database with PackageName.CompanyName.ProjectName..."); - // 迁移租户数据 - await DbSchemaMigrator.MigrateAsync( - (connectionString, builder) => - { -#if MySQL - builder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)); -#elif SqlServer - builder.UseSqlServer(connectionString); -#elif Sqlite - builder.UseSqlite(connectionString); -#elif Oracle - builder.UseOracle(connectionString); -#elif OracleDevart - builder.UseOracle(connectionString); -#elif PostgreSql - builder.UseNpgsql(connectionString); -#endif - - return new ProjectNameDbContext(builder.Options); - }); - Logger.LogInformation("Migrated the new tenant database with PackageName.CompanyName.ProjectName..."); - - await DataSeeder.SeedAsync(new DataSeedContext(eventData.Id)); - - await unitOfWork.SaveChangesAsync(); - } - } - } -} diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj index 6c5211795..e713008be 100644 --- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj +++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj @@ -6,61 +6,61 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs index 0094a93ca..317132028 100644 --- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs +++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs @@ -17,6 +17,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.OpenApi.Models; +using OpenTelemetry.Metrics; using OpenTelemetry.Resources; using OpenTelemetry.Trace; using PackageName.CompanyName.ProjectName.Localization; @@ -139,24 +140,31 @@ public partial class ProjectNameHttpApiHostModule var openTelemetryEnabled = configuration["OpenTelemetry:IsEnabled"]; if (openTelemetryEnabled.IsNullOrEmpty() || bool.Parse(openTelemetryEnabled)) { - services.AddOpenTelemetryTracing(cfg => - { - cfg.AddSource(ApplicationName) - .SetResourceBuilder( - ResourceBuilder.CreateDefault().AddService(ApplicationName)) - .AddHttpClientInstrumentation() - .AddAspNetCoreInstrumentation() - //.AddEntityFrameworkCoreInstrumentation() - .AddCapInstrumentation() - .AddZipkinExporter(zipKinOptions => - { - var endpoint = configuration["OpenTelemetry:ZipKin:Endpoint"]; - if (!endpoint.IsNullOrWhiteSpace()) - { - zipKinOptions.Endpoint = new Uri(configuration["OpenTelemetry:ZipKin:Endpoint"]); - } - }); - }); + services.AddOpenTelemetry() + .ConfigureResource(builder => + { + builder.AddService(ApplicationName); + }) + .WithTracing(builder => + { + builder.AddHttpClientInstrumentation(); + builder.AddAspNetCoreInstrumentation(); + builder.AddCapInstrumentation(); + builder.AddEntityFrameworkCoreInstrumentation(); + builder.AddZipkinExporter(zipKinOptions => + { + var endpoint = configuration["OpenTelemetry:ZipKin:Endpoint"]; + if (!endpoint.IsNullOrWhiteSpace()) + { + zipKinOptions.Endpoint = new Uri(configuration["OpenTelemetry:ZipKin:Endpoint"]); + } + }); + }) + .WithMetrics(builder => + { + builder.AddHttpClientInstrumentation(); + builder.AddAspNetCoreInstrumentation(); + }); } } @@ -312,6 +320,7 @@ public partial class ProjectNameHttpApiHostModule options.Authority = configuration["AuthServer:Authority"]; options.Audience = configuration["AuthServer:ApiName"]; options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); + options.MapInboundClaims = Convert.ToBoolean(configuration["AuthServer:MapInboundClaims"]); }); if (!isDevelopment) diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs index 0abe6ab24..384fe9b92 100644 --- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs +++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs @@ -109,6 +109,7 @@ public partial class ProjectNameHttpApiHostModule : AbpModule #elif OpenIddict app.UseAbpOpenIddictValidation(); #endif + app.UseDynamicClaims(); app.UseMultiTenancy(); app.UseAuthorization(); app.UseSwagger(); diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json index c6e784dad..f7c712b7c 100644 --- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json @@ -46,6 +46,7 @@ "InternalServiceClient": { "Authority": "http://127.0.0.1:44385", "RequireHttps": false, + "MapInboundClaims": false, "GrantType": "client_credentials", "Scope": "lingyun-abp-application", "ClientId": "InternalServiceClient", diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj index 4eb9907a3..5ea7939b9 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj @@ -9,10 +9,10 @@ - - - - + + + + diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj index c301dd4fb..f7648550c 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj @@ -9,8 +9,8 @@ - - + + diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/System/Linq/Expressions/ExpressionFuncExtensions.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/System/Linq/Expressions/ExpressionFuncExtensions.cs new file mode 100644 index 000000000..fd7a017ea --- /dev/null +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/System/Linq/Expressions/ExpressionFuncExtensions.cs @@ -0,0 +1,32 @@ +using Volo.Abp.Specifications; + +namespace System.Linq.Expressions; + +internal static class ExpressionFuncExtensions +{ + public static Expression> AndIf( + this Expression> first, + bool condition, + Expression> second) + { + if (condition) + { + return ExpressionFuncExtender.And(first, second); + } + + return first; + } + + public static Expression> OrIf( + this Expression> first, + bool condition, + Expression> second) + { + if (condition) + { + return ExpressionFuncExtender.Or(first, second); + } + + return first; + } +} diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj index d5a4e69ac..4372fdff4 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj @@ -9,7 +9,7 @@ - + diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj index e10b1cfdd..39a5ff943 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj @@ -17,9 +17,9 @@ - - - + + + diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj index 2b70ff5aa..aa9fe6a4a 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj @@ -9,9 +9,10 @@ - - - + + + + diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameSpecificationSupport.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs similarity index 90% rename from aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameSpecificationSupport.cs rename to aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs index e86bc9de9..290e09398 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameSpecificationSupport.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs @@ -1,53 +1,54 @@ -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp.Domain.Entities; -using Volo.Abp.Specifications; - -namespace PackageName.CompanyName.ProjectName; -/// -/// 实现接口支持规约化查询 -/// -/// 实体类型 -/// 实体主键类型 -public interface IProjectNameSpecificationSupport - where TEntity : class, IEntity -{ - /// - /// 获取过滤后的实体数量 - /// - /// - /// - /// - Task GetCountAsync( - ISpecification specification, - CancellationToken cancellationToken = default); - /// - /// 获取过滤后的实体列表(分页) - /// - /// - /// - /// - /// - /// - /// - Task> GetListAsync( - ISpecification specification, - string sorting = nameof(IEntity.Id), - int maxResultCount = 10, - int skipCount = 0, - CancellationToken cancellationToken = default); - /// - /// 获取过滤后的实体列表 - /// - /// - /// - /// - /// - /// - Task> GetListAsync( - ISpecification specification, - string sorting = nameof(IEntity.Id), - int maxResultCount = 10, - CancellationToken cancellationToken = default); -} +using LINGYUN.Abp.DataProtection; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Entities; +using Volo.Abp.Specifications; + +namespace PackageName.CompanyName.ProjectName; +/// +/// 基本仓储接口 +/// +/// 实体类型 +/// 实体主键类型 +public interface IProjectNameBasicRepository : IDataProtectionRepository + where TEntity : class, IEntity +{ + /// + /// 获取过滤后的实体数量 + /// + /// + /// + /// + Task GetCountAsync( + ISpecification specification, + CancellationToken cancellationToken = default); + /// + /// 获取过滤后的实体列表(分页) + /// + /// + /// + /// + /// + /// + /// + Task> GetListAsync( + ISpecification specification, + string sorting = nameof(IEntity.Id), + int maxResultCount = 10, + int skipCount = 0, + CancellationToken cancellationToken = default); + /// + /// 获取过滤后的实体列表 + /// + /// + /// + /// + /// + /// + Task> GetListAsync( + ISpecification specification, + string sorting = nameof(IEntity.Id), + int maxResultCount = 10, + CancellationToken cancellationToken = default); +} diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs index 83927c1d2..715c1c3b2 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection; +using LINGYUN.Abp.DataProtection; +using Microsoft.Extensions.DependencyInjection; using PackageName.CompanyName.ProjectName.ObjectExtending; using Volo.Abp.AutoMapper; using Volo.Abp.Domain.Entities.Events.Distributed; @@ -10,6 +11,7 @@ namespace PackageName.CompanyName.ProjectName; [DependsOn( typeof(AbpAutoMapperModule), + typeof(AbpDataProtectionModule), typeof(ProjectNameDomainSharedModule))] public class ProjectNameDomainModule : AbpModule { diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettingDefinitionProvider.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettingDefinitionProvider.cs index 64db558bf..3845b6ba7 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettingDefinitionProvider.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettingDefinitionProvider.cs @@ -1,11 +1,10 @@ using Volo.Abp.Settings; -namespace PackageName.CompanyName.ProjectName.Settings +namespace PackageName.CompanyName.ProjectName.Settings; + +public class ProjectNameSettingDefinitionProvider : SettingDefinitionProvider { - public class ProjectNameSettingDefinitionProvider : SettingDefinitionProvider + public override void Define(ISettingDefinitionContext context) { - public override void Define(ISettingDefinitionContext context) - { - } } } diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettings.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettings.cs index 7561cf8da..5d6afce6c 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettings.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettings.cs @@ -1,7 +1,6 @@ -namespace PackageName.CompanyName.ProjectName.Settings +namespace PackageName.CompanyName.ProjectName.Settings; + +public static class ProjectNameSettings { - public static class ProjectNameSettings - { - public const string GroupName = "ProjectName"; - } + public const string GroupName = "ProjectName"; } diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj index 21a9721af..0ad982caf 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj @@ -9,19 +9,20 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - + + + + + + + + + + diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreSpecificationSupportRepository.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs similarity index 78% rename from aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreSpecificationSupportRepository.cs rename to aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs index 0ba264327..2d68cf660 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreSpecificationSupportRepository.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs @@ -1,73 +1,77 @@ -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Dynamic.Core; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp.Domain.Entities; -using Volo.Abp.Domain.Repositories.EntityFrameworkCore; -using Volo.Abp.EntityFrameworkCore; -using Volo.Abp.Specifications; - -namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore; -/// -/// 实现仓储提供规约化查询 -/// -/// 实体类型 -/// 实体主键类型 -public abstract class EfCoreSpecificationSupportRepository : - EfCoreRepository, - IProjectNameSpecificationSupport - where TEntity : class, IEntity -{ - protected EfCoreSpecificationSupportRepository( - IDbContextProvider dbContextProvider) : base(dbContextProvider) - { - } - - public async virtual Task GetCountAsync( - ISpecification specification, - CancellationToken cancellationToken = default) - { - return await (await GetDbSetAsync()) - .Where(specification.ToExpression()) - .CountAsync(GetCancellationToken(cancellationToken)); - } - - public async virtual Task> GetListAsync( - ISpecification specification, - string sorting = nameof(IEntity.Id), - int maxResultCount = 10, - int skipCount = 0, - CancellationToken cancellationToken = default) - { - return await (await GetDbSetAsync()) - .Where(specification.ToExpression()) - .OrderBy(GetSortingOrDefault(sorting)) - .PageBy(skipCount, maxResultCount) - .ToListAsync(GetCancellationToken(cancellationToken)); - } - - public async virtual Task> GetListAsync( - ISpecification specification, - string sorting = nameof(IEntity.Id), - int maxResultCount = 10, - CancellationToken cancellationToken = default) - { - return await (await GetDbSetAsync()) - .Where(specification.ToExpression()) - .OrderBy(GetSortingOrDefault(sorting)) - .Take(maxResultCount) - .ToListAsync(GetCancellationToken(cancellationToken)); - } - - protected virtual string GetSortingOrDefault(string sorting = nameof(IEntity.Id)) - { - if (sorting.IsNullOrWhiteSpace()) - { - return nameof(IEntity.Id); - } - return sorting; - } -} +using LINGYUN.Abp.DataProtection; +using LINGYUN.Abp.DataProtection.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Entities; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.Specifications; + +namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore; +/// +/// 实现基本接口 +/// +/// 实体类型 +/// 实体主键类型 +public abstract class EfCoreProjectNameRepository : + EfCoreDataProtectionRepository, + IProjectNameBasicRepository + where TEntity : class, IEntity +{ + protected EfCoreProjectNameRepository( + IDbContextProvider dbContextProvider, + IDataAuthorizationService dataAuthorizationService, + IEntityTypeFilterBuilder entityTypeFilterBuilder) + : base(dbContextProvider, dataAuthorizationService, entityTypeFilterBuilder) + { + } + + public async virtual Task GetCountAsync( + ISpecification specification, + CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .Where(specification.ToExpression()) + .CountAsync(GetCancellationToken(cancellationToken)); + } + + public async virtual Task> GetListAsync( + ISpecification specification, + string sorting = nameof(IEntity.Id), + int maxResultCount = 10, + int skipCount = 0, + CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .Where(specification.ToExpression()) + .OrderBy(GetSortingOrDefault(sorting)) + .PageBy(skipCount, maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + public async virtual Task> GetListAsync( + ISpecification specification, + string sorting = nameof(IEntity.Id), + int maxResultCount = 10, + CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .Where(specification.ToExpression()) + .OrderBy(GetSortingOrDefault(sorting)) + .Take(maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + protected virtual string GetSortingOrDefault(string sorting = nameof(IEntity.Id)) + { + if (sorting.IsNullOrWhiteSpace()) + { + return nameof(IEntity.Id); + } + return sorting; + } +} diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContext.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContext.cs index 5e43ea730..3b7ad579f 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContext.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContext.cs @@ -1,11 +1,11 @@ -using Microsoft.EntityFrameworkCore; +using LINGYUN.Abp.DataProtection.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Volo.Abp.Data; -using Volo.Abp.EntityFrameworkCore; namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore; [ConnectionStringName(ProjectNameDbProperties.ConnectionStringName)] -public class ProjectNameDbContext : AbpDbContext, IProjectNameDbContext +public class ProjectNameDbContext : AbpDataProtectionDbContext, IProjectNameDbContext { public ProjectNameDbContext( DbContextOptions options) : base(options) diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs index fb335de37..51670b84d 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs @@ -1,12 +1,34 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using Microsoft.Extensions.Logging; +using System; using System.Threading.Tasks; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore.Migrations; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Uow; namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore; public class ProjectNameDbMigrationEventHandler : EfCoreDatabaseMigrationEventHandlerBase { + protected IDataSeeder DataSeeder { get; } + + public ProjectNameDbMigrationEventHandler( + IDataSeeder dataSeeder, + ITenantStore tenantStore, + ICurrentTenant currentTenant, + IUnitOfWorkManager unitOfWorkManager, + IDistributedEventBus distributedEventBus, + ILoggerFactory loggerFactory) + : base( + ConnectionStringNameAttribute.GetConnStringName(), + currentTenant, unitOfWorkManager, tenantStore, distributedEventBus, loggerFactory) + { + DataSeeder = dataSeeder; + } + + protected async override Task SeedAsync(Guid? tenantId) + { + await DataSeeder.SeedAsync(tenantId); + } } diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationService.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationService.cs index ea4490372..a117242bb 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationService.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationService.cs @@ -1,234 +1,59 @@ using LINGYUN.Abp.Data.DbMigrator; using LINGYUN.Abp.Saas.Tenants; -using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Logging.Abstractions; using PackageName.CompanyName.ProjectName.EntityFrameworkCore; using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; using System.Linq; -using System.Runtime.InteropServices; using System.Threading.Tasks; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; +using Volo.Abp.DistributedLocking; +using Volo.Abp.EventBus.Distributed; using Volo.Abp.MultiTenancy; +using Volo.Abp.Uow; namespace PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore; -public class ProjectNameDbMigrationService : ITransientDependency +public class ProjectNameDbMigrationService : EfCoreRuntimeDbMigratorBase, ITransientDependency { - public ILogger Logger { get; set; } - - private readonly IDataSeeder _dataSeeder; - private readonly IDbSchemaMigrator _dbSchemaMigrator; - private readonly ITenantRepository _tenantRepository; - private readonly ICurrentTenant _currentTenant; + protected IDataSeeder DataSeeder { get; } + protected IDbSchemaMigrator DbSchemaMigrator { get; } + protected ITenantRepository TenantRepository { get; } public ProjectNameDbMigrationService( IDataSeeder dataSeeder, IDbSchemaMigrator dbSchemaMigrator, ITenantRepository tenantRepository, - ICurrentTenant currentTenant) - { - _dataSeeder = dataSeeder; - _dbSchemaMigrator = dbSchemaMigrator; - _tenantRepository = tenantRepository; - _currentTenant = currentTenant; - - Logger = NullLogger.Instance; - } - - public async Task MigrateAsync() - { - var initialMigrationAdded = AddInitialMigrationIfNotExist(); - - if (initialMigrationAdded) - { - return; - } - - Logger.LogInformation("Started database migrations..."); - - await MigrateDatabaseSchemaAsync(); - await SeedDataAsync(); - - Logger.LogInformation($"Successfully completed host database migrations."); - - var tenants = await _tenantRepository.GetListAsync(includeDetails: true); - - var migratedDatabaseSchemas = new HashSet(); - foreach (var tenant in tenants) - { - using (_currentTenant.Change(tenant.Id)) - { - if (tenant.ConnectionStrings.Any()) - { - var tenantConnectionStrings = tenant.ConnectionStrings - .Select(x => x.Value) - .ToList(); - - if (!migratedDatabaseSchemas.IsSupersetOf(tenantConnectionStrings)) - { - await MigrateDatabaseSchemaAsync(tenant); - - migratedDatabaseSchemas.AddIfNotContains(tenantConnectionStrings); - } - } - - await SeedDataAsync(tenant); - } - - Logger.LogInformation($"Successfully completed {tenant.Name} tenant database migrations."); - } - - Logger.LogInformation("Successfully completed all database migrations."); - Logger.LogInformation("You can safely end this process..."); - } - - private async Task MigrateDatabaseSchemaAsync(Tenant? tenant = null) - { - Logger.LogInformation($"Migrating schema for {(tenant == null ? "host" : tenant.Name + " tenant")} database..."); - // 迁移租户数据 - await _dbSchemaMigrator.MigrateAsync( - (connectionString, builder) => - { -#if MySQL - builder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)); -#elif SqlServer - builder.UseSqlServer(connectionString); -#elif Sqlite - builder.UseSqlite(connectionString); -#elif Oracle - builder.UseOracle(connectionString); -#elif OracleDevart - builder.UseOracle(connectionString); -#elif PostgreSql - builder.UseNpgsql(connectionString); -#endif - - return new ProjectNameDbContext(builder.Options); - }); - } - - private async Task SeedDataAsync(Tenant? tenant = null) - { - Logger.LogInformation($"Executing {(tenant == null ? "host" : tenant.Name + " tenant")} database seed..."); - - await _dataSeeder.SeedAsync(tenant?.Id); - } - - private bool AddInitialMigrationIfNotExist() - { - try - { - if (!DbMigrationsProjectExists()) - { - return false; - } - } - catch (Exception) - { - return false; - } - - try - { - if (!MigrationsFolderExists()) - { - AddInitialMigration(); - return true; - } - else - { - return false; - } - } - catch (Exception e) - { - Logger.LogWarning("Couldn't determinate if any migrations exist : " + e.Message); - return false; - } - } - - private bool DbMigrationsProjectExists() + ICurrentTenant currentTenant, + IUnitOfWorkManager unitOfWorkManager, + IServiceProvider serviceProvider, + IAbpDistributedLock abpDistributedLock, + IDistributedEventBus distributedEventBus, + ILoggerFactory loggerFactory) + : base( + ConnectionStringNameAttribute.GetConnStringName(), + unitOfWorkManager, serviceProvider, currentTenant, abpDistributedLock, distributedEventBus, loggerFactory) { - return Directory.Exists(GetEntityFrameworkCoreProjectFolderPath()); - } - - private bool MigrationsFolderExists() - { - var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath(); - - return Directory.Exists(Path.Combine(dbMigrationsProjectFolder, "Migrations")); - } - - private void AddInitialMigration() - { - Logger.LogInformation("Creating initial migration..."); - - string argumentPrefix; - string fileName; - - if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - argumentPrefix = "-c"; - fileName = "/bin/bash"; - } - else - { - argumentPrefix = "/C"; - fileName = "cmd.exe"; - } - - var procStartInfo = new ProcessStartInfo(fileName, - $"{argumentPrefix} \"abp create-migration-and-run-migrator \"{GetEntityFrameworkCoreProjectFolderPath()}\" --nolayers\"" - ); - - try - { - Process.Start(procStartInfo); - } - catch (Exception) - { - throw new Exception("Couldn't run ABP CLI..."); - } + DataSeeder = dataSeeder; + DbSchemaMigrator = dbSchemaMigrator; + TenantRepository = tenantRepository; } - private string GetEntityFrameworkCoreProjectFolderPath() + protected async override Task LockAndApplyDatabaseMigrationsAsync() { - var slnDirectoryPath = GetSolutionDirectoryPath(); + await base.LockAndApplyDatabaseMigrationsAsync(); - if (slnDirectoryPath == null) + var tenants = await TenantRepository.GetListAsync(); + foreach (var tenant in tenants.Where(x => x.IsActive)) { - throw new Exception("Solution folder not found!"); + await LockAndApplyDatabaseWithTenantMigrationsAsync(tenant.Id); } - - return Path.Combine(slnDirectoryPath, "PackageName.CompanyName.ProjectName.HttpApi.Host"); } - private string? GetSolutionDirectoryPath() + protected async override Task SeedAsync() { - var currentDirectory = new DirectoryInfo(Directory.GetCurrentDirectory()); - - while (Directory.GetParent(currentDirectory.FullName) != null) - { - currentDirectory = Directory.GetParent(currentDirectory.FullName); - - if (Directory.GetFiles(currentDirectory!.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null) - { - return currentDirectory.FullName; - } - - // parent host - currentDirectory = Directory.GetParent(currentDirectory.FullName); - if (Directory.GetFiles(currentDirectory!.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null) - { - return currentDirectory.FullName; - } - } + Logger.LogInformation($"Executing {(!CurrentTenant.IsAvailable ? "host" : CurrentTenant.Name ?? CurrentTenant.GetId().ToString())} database seed..."); - return null; + await DataSeeder.SeedAsync(CurrentTenant.Id); } } \ No newline at end of file diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs index 42e4f6a4b..c573211b5 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs @@ -1,4 +1,5 @@ using LINGYUN.Abp.Data.DbMigrator; +using LINGYUN.Abp.DataProtection.EntityFrameworkCore; using LINGYUN.Abp.Saas.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.EntityFrameworkCore; @@ -22,7 +23,7 @@ namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore; [DependsOn( typeof(ProjectNameDomainModule), typeof(AbpDataDbMigratorModule), - typeof(AbpEntityFrameworkCoreModule), + typeof(AbpDataProtectionEntityFrameworkCoreModule), #if MySQL typeof(AbpEntityFrameworkCoreMySQLModule), #elif SqlServer diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj index 3931245c0..71cc1d5d7 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj @@ -9,7 +9,7 @@ - + diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj index ddded50c6..337c0b047 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj @@ -9,8 +9,8 @@ - - + + diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj index e39ee6ee8..2e7ffe21a 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj @@ -9,13 +9,14 @@ - - - + + + + diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingController.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingController.cs index 0351f10ad..8e2a69ca3 100644 --- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingController.cs +++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingController.cs @@ -1,4 +1,5 @@ -using LINGYUN.Abp.SettingManagement; +using Asp.Versioning; +using LINGYUN.Abp.SettingManagement; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using PackageName.CompanyName.ProjectName.Authorization; diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj index ab9c425af..8a875c135 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestBase.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestBase.cs index 81ea710fc..64198871d 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestBase.cs +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestBase.cs @@ -1,6 +1,5 @@ -namespace PackageName.CompanyName.ProjectName +namespace PackageName.CompanyName.ProjectName; + +public abstract class ProjectNameApplicationTestBase : ProjectNameTestBase { - public abstract class ProjectNameApplicationTestBase : ProjectNameTestBase - { - } } diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestModule.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestModule.cs index 6d74be333..12175d486 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestModule.cs +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestModule.cs @@ -1,12 +1,11 @@ using Volo.Abp.Modularity; -namespace PackageName.CompanyName.ProjectName +namespace PackageName.CompanyName.ProjectName; + +[DependsOn( + typeof(ProjectNameDomainTestModule), + typeof(ProjectNameApplicationModule) + )] +public class ProjectNameApplicationTestModule : AbpModule { - [DependsOn( - typeof(ProjectNameDomainTestModule), - typeof(ProjectNameApplicationModule) - )] - public class ProjectNameApplicationTestModule : AbpModule - { - } } diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj index bba6e43fd..09e35ceb3 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestBase.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestBase.cs index f33c7a00d..01b678fe1 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestBase.cs +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestBase.cs @@ -1,6 +1,5 @@ -namespace PackageName.CompanyName.ProjectName +namespace PackageName.CompanyName.ProjectName; + +public abstract class ProjectNameDomainTestBase : ProjectNameTestBase { - public abstract class ProjectNameDomainTestBase : ProjectNameTestBase - { - } } diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestModule.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestModule.cs index 16404a73f..55d69b77c 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestModule.cs +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestModule.cs @@ -1,12 +1,11 @@ using Volo.Abp.Modularity; -namespace PackageName.CompanyName.ProjectName +namespace PackageName.CompanyName.ProjectName; + +[DependsOn( + typeof(ProjectNameTestBaseModule), + typeof(ProjectNameDomainModule) + )] +public class ProjectNameDomainTestModule : AbpModule { - [DependsOn( - typeof(ProjectNameTestBaseModule), - typeof(ProjectNameDomainModule) - )] - public class ProjectNameDomainTestModule : AbpModule - { - } } diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests.csproj b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests.csproj index aeed48484..61d399721 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests.csproj +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests.csproj @@ -1,19 +1,19 @@  - - net8.0 - - false - + + net8.0 + + false + - - - - + + + + - - - - + + + + diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestBase.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestBase.cs index 7fd73c607..6971ba357 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestBase.cs +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestBase.cs @@ -1,6 +1,5 @@ -namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore +namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore; + +public abstract class ProjectNameEntityFrameworkCoreTestBase : ProjectNameTestBase { - public abstract class ProjectNameEntityFrameworkCoreTestBase : ProjectNameTestBase - { - } } diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestModule.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestModule.cs index 39f7d3e43..2146db9ca 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestModule.cs +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestModule.cs @@ -5,35 +5,34 @@ using Volo.Abp.EntityFrameworkCore; using Volo.Abp.Modularity; using Volo.Abp.Uow; -namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore +namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore; + +[DependsOn( + typeof(ProjectNameTestBaseModule), + typeof(ProjectNameEntityFrameworkCoreModule) + )] +public class ProjectNameEntityFrameworkCoreTestModule : AbpModule { - [DependsOn( - typeof(ProjectNameTestBaseModule), - typeof(ProjectNameEntityFrameworkCoreModule) - )] - public class ProjectNameEntityFrameworkCoreTestModule : AbpModule + public override void ConfigureServices(ServiceConfigurationContext context) { - public override void ConfigureServices(ServiceConfigurationContext context) - { - context.Services.AddEntityFrameworkInMemoryDatabase(); + context.Services.AddEntityFrameworkInMemoryDatabase(); - var databaseName = Guid.NewGuid().ToString(); + var databaseName = Guid.NewGuid().ToString(); - Configure(options => + Configure(options => + { + options.Configure(abpDbContextConfigurationContext => { - options.Configure(abpDbContextConfigurationContext => - { - abpDbContextConfigurationContext.DbContextOptions.EnableDetailedErrors(); - abpDbContextConfigurationContext.DbContextOptions.EnableSensitiveDataLogging(); + abpDbContextConfigurationContext.DbContextOptions.EnableDetailedErrors(); + abpDbContextConfigurationContext.DbContextOptions.EnableSensitiveDataLogging(); - abpDbContextConfigurationContext.DbContextOptions.UseInMemoryDatabase(databaseName); - }); + abpDbContextConfigurationContext.DbContextOptions.UseInMemoryDatabase(databaseName); }); + }); - Configure(options => - { - options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; //EF in-memory database does not support transactions - }); - } + Configure(options => + { + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; //EF in-memory database does not support transactions + }); } } diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj index f02df0996..e983ebfaf 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj @@ -7,17 +7,17 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBase.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBase.cs index 825525f0a..79cca930d 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBase.cs +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBase.cs @@ -6,53 +6,52 @@ using Volo.Abp.Modularity; using Volo.Abp.Testing; using Volo.Abp.Uow; -namespace PackageName.CompanyName.ProjectName +namespace PackageName.CompanyName.ProjectName; + +public abstract class ProjectNameTestBase : AbpIntegratedTest + where TStartupModule : IAbpModule { - public abstract class ProjectNameTestBase : AbpIntegratedTest - where TStartupModule : IAbpModule + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) { - protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) - { - options.UseAutofac(); - } + options.UseAutofac(); + } - protected virtual Task WithUnitOfWorkAsync(Func func) - { - return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); - } + protected virtual Task WithUnitOfWorkAsync(Func func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } - protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func action) + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func action) + { + using (var scope = ServiceProvider.CreateScope()) { - using (var scope = ServiceProvider.CreateScope()) - { - var uowManager = scope.ServiceProvider.GetRequiredService(); + var uowManager = scope.ServiceProvider.GetRequiredService(); - using (var uow = uowManager.Begin(options)) - { - await action(); + using (var uow = uowManager.Begin(options)) + { + await action(); - await uow.CompleteAsync(); - } + await uow.CompleteAsync(); } } + } - protected virtual Task WithUnitOfWorkAsync(Func> func) - { - return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); - } + protected virtual Task WithUnitOfWorkAsync(Func> func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } - protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func> func) + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func> func) + { + using (var scope = ServiceProvider.CreateScope()) { - using (var scope = ServiceProvider.CreateScope()) + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) { - var uowManager = scope.ServiceProvider.GetRequiredService(); - - using (var uow = uowManager.Begin(options)) - { - var result = await func(); - await uow.CompleteAsync(); - return result; - } + var result = await func(); + await uow.CompleteAsync(); + return result; } } } diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBaseModule.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBaseModule.cs index a24ec432c..adab3640d 100644 --- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBaseModule.cs +++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBaseModule.cs @@ -6,20 +6,19 @@ using Volo.Abp.Features; using Volo.Abp.MemoryDb; using Volo.Abp.Modularity; -namespace PackageName.CompanyName.ProjectName +namespace PackageName.CompanyName.ProjectName; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpTestBaseModule), + typeof(AbpAuthorizationModule), + typeof(AbpFeaturesModule), + typeof(AbpMemoryDbModule) + )] +public class ProjectNameTestBaseModule : AbpModule { - [DependsOn( - typeof(AbpAutofacModule), - typeof(AbpTestBaseModule), - typeof(AbpAuthorizationModule), - typeof(AbpFeaturesModule), - typeof(AbpMemoryDbModule) - )] - public class ProjectNameTestBaseModule : AbpModule + public override void ConfigureServices(ServiceConfigurationContext context) { - public override void ConfigureServices(ServiceConfigurationContext context) - { - context.Services.AddAlwaysAllowAuthorization(); - } + context.Services.AddAlwaysAllowAuthorization(); } }