Browse Source

merge

pull/21065/head
Mark Cilia Vincenti 2 years ago
parent
commit
b08379a50c
  1. 2
      .github/workflows/build-and-test.yml
  2. 112
      Directory.Packages.props
  3. 68
      docs/en/Community-Articles/2024-10-11-NET-Aspire-vs-ABP-Studio/POST.md
  4. BIN
      docs/en/Community-Articles/2024-10-11-NET-Aspire-vs-ABP-Studio/abp-overall-diagram.png
  5. BIN
      docs/en/images/my-externa-logins.png
  6. BIN
      docs/en/images/new-external-login.png
  7. BIN
      docs/en/images/require-local-password-on-social-account-linking.png
  8. 22
      docs/en/modules/account-pro.md
  9. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs
  10. 4
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcModule.cs
  11. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs
  12. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs
  13. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs
  14. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs
  15. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Validation/ValidationAttributeHelper.cs
  16. 4
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs
  17. 1
      framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/IPermissionDefinitionContext.cs
  18. 2
      framework/src/Volo.Abp.BlazoriseUI/Components/UiNotificationAlert.razor
  19. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs
  20. 26
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
  21. 8
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/Services/DotnetEfToolManager.cs
  22. 4
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs
  23. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntry.cs
  24. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
  25. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs
  26. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs
  27. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/DependencyInjection/IAbpCommonDbContextRegistrationOptionsBuilder.cs
  28. 4
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRootWithUser.cs
  29. 4
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRootWithUser.cs
  30. 2
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntityWithUser.cs
  31. 2
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntityWithUser.cs
  32. 2
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/AbpEmailingModule.cs
  33. 2
      framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/ConnectionStrings/MySqlConnectionStringChecker.cs
  34. 2
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/ConnectionStrings/OracleDevartConnectionStringChecker.cs
  35. 2
      framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo/Abp/EntityFrameworkCore/ConnectionStrings/OracleConnectionStringChecker.cs
  36. 2
      framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/ConnectionStrings/NpgsqlConnectionStringChecker.cs
  37. 2
      framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo/Abp/EntityFrameworkCore/ConnectionStrings/SqlServerConnectionStringChecker.cs
  38. 2
      framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/ConnectionStrings/SqliteConnectionStringChecker.cs
  39. 4
      framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/DistributedEventBusBase.cs
  40. 6
      framework/src/Volo.Abp.Guids/Volo/Abp/Guids/SequentialGuidType.cs
  41. 2
      framework/src/Volo.Abp.Json.Newtonsoft/Volo/Abp/Json/Newtonsoft/AbpNewtonsoftJsonSerializer.cs
  42. 2
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/ConnectionStrings/MongoDBConnectionStringChecker.cs
  43. 2
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs
  44. 8
      framework/src/Volo.Abp.ObjectMapping/Volo/Abp/ObjectMapping/IObjectMapper.cs
  45. 108
      framework/src/Volo.Abp.Security/Volo/Abp/Security/Encryption/StringEncryptionService.cs
  46. 4
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinition.cs
  47. 4
      framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/EmptyProjectFileSystem.cs
  48. 2
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs
  49. 3
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController.cs
  50. 2
      framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/TestApp/EntityFrameworkCore/TestAppDbContext.cs
  51. 2
      global.json
  52. 2
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj
  53. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
  54. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj
  55. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj
  56. 6
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj
  57. 2
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared.csproj
  58. 2
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj
  59. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj
  60. 2
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj
  61. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj
  62. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj
  63. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj
  64. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj
  65. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
  66. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj
  67. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj
  68. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj
  69. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj
  70. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj
  71. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj
  72. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj
  73. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj
  74. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj
  75. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
  76. 4
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj
  77. 2
      templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj
  78. 2
      templates/maui/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj
  79. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj
  80. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.Client.csproj
  81. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj
  82. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj
  83. 6
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj
  84. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
  85. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj
  86. 2
      templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj
  87. 2
      templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj
  88. 2
      templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj
  89. 2
      templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj
  90. 2
      templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj

2
.github/workflows/build-and-test.yml

@ -51,7 +51,7 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-dotnet@master - uses: actions/setup-dotnet@master
with: with:
dotnet-version: 9.0.100-rc.1.24452.12 dotnet-version: 9.0.100-rc.2.24474.11
- name: chown - name: chown
run: | run: |

112
Directory.Packages.props

@ -6,7 +6,7 @@
<PackageVersion Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="3.0.0" /> <PackageVersion Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="3.0.0" />
<PackageVersion Include="aliyun-net-sdk-sts" Version="3.1.2" /> <PackageVersion Include="aliyun-net-sdk-sts" Version="3.1.2" />
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" /> <PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" />
<PackageVersion Include="AsyncKeyedLock" Version="7.0.1" /> <PackageVersion Include="AsyncKeyedLock" Version="7.0.2" />
<PackageVersion Include="Autofac" Version="8.1.0" /> <PackageVersion Include="Autofac" Version="8.1.0" />
<PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="10.0.0" /> <PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="10.0.0" />
<PackageVersion Include="Autofac.Extras.DynamicProxy" Version="7.1.0" /> <PackageVersion Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
@ -51,60 +51,60 @@
<PackageVersion Include="Magick.NET-Q16-AnyCPU" Version="13.4.0" /> <PackageVersion Include="Magick.NET-Q16-AnyCPU" Version="13.4.0" />
<PackageVersion Include="MailKit" Version="4.8.0" /> <PackageVersion Include="MailKit" Version="4.8.0" />
<PackageVersion Include="Markdig.Signed" Version="0.37.0" /> <PackageVersion Include="Markdig.Signed" Version="0.37.0" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Components" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.Razor.Language" Version="6.0.33" /> <PackageVersion Include="Microsoft.AspNetCore.Razor.Language" Version="6.0.33" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.AspNetCore.WebUtilities" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.AspNetCore.WebUtilities" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" /> <PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" />
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" /> <PackageVersion Include="Microsoft.CSharp" Version="4.7.0" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.0-rc.1.24451.1" /> <PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.0-rc.1.24451.1" /> <PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0-rc.1.24451.1" /> <PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.0-rc.1.24451.1" /> <PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.0-rc.1.24451.1" /> <PackageVersion Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.0-rc.1.24451.1" /> <PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0-rc.1.24451.1" /> <PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0-rc.1.24451.1" /> <PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1" /> <PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1" />
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="9.0.0-preview.7.24406.2" /> <PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="9.0.0-preview.7.24406.2" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Composite" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.FileProviders.Composite" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Http" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.Extensions.Localization" Version="9.0.0-rc.1.24452.1" /> <PackageVersion Include="Microsoft.Extensions.Localization" Version="9.0.0-rc.2.24474.3" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0-rc.1.24457.2" /> <PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0-rc.2.24508.2" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" /> <PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.1.0" /> <PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.1.0" />
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.1.0" /> <PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.1.0" />
@ -114,7 +114,7 @@
<PackageVersion Include="NEST" Version="7.17.5" /> <PackageVersion Include="NEST" Version="7.17.5" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" /> <PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="Nito.AsyncEx.Context" Version="5.1.2" /> <PackageVersion Include="Nito.AsyncEx.Context" Version="5.1.2" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.0-rc.1" /> <PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.0-rc.2" />
<PackageVersion Include="NSubstitute" Version="5.1.0" /> <PackageVersion Include="NSubstitute" Version="5.1.0" />
<PackageVersion Include="NuGet.Versioning" Version="6.11.1" /> <PackageVersion Include="NuGet.Versioning" Version="6.11.1" />
<PackageVersion Include="NUglify" Version="1.21.9" /> <PackageVersion Include="NUglify" Version="1.21.9" />
@ -155,17 +155,17 @@
<PackageVersion Include="Spectre.Console" Version="0.49.1" /> <PackageVersion Include="Spectre.Console" Version="0.49.1" />
<PackageVersion Include="StackExchange.Redis" Version="2.8.16" /> <PackageVersion Include="StackExchange.Redis" Version="2.8.16" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.8.1" /> <PackageVersion Include="Swashbuckle.AspNetCore" Version="6.8.1" />
<PackageVersion Include="System.Collections.Immutable" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="System.Collections.Immutable" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" /> <PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" />
<PackageVersion Include="System.Linq.Async" Version="6.0.1" /> <PackageVersion Include="System.Linq.Async" Version="6.0.1" />
<PackageVersion Include="System.Linq.Dynamic.Core" Version="1.4.5" /> <PackageVersion Include="System.Linq.Dynamic.Core" Version="1.4.5" />
<PackageVersion Include="System.Linq.Queryable" Version="4.3.0" /> <PackageVersion Include="System.Linq.Queryable" Version="4.3.0" />
<PackageVersion Include="System.Runtime.Loader" Version="4.3.0" /> <PackageVersion Include="System.Runtime.Loader" Version="4.3.0" />
<PackageVersion Include="System.Security.Permissions" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="System.Security.Permissions" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="System.Security.Principal.Windows" Version="5.0.0" /> <PackageVersion Include="System.Security.Principal.Windows" Version="5.0.0" />
<PackageVersion Include="System.Text.Encoding.CodePages" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="System.Text.Encoding.CodePages" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="System.Text.Encodings.Web" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="System.Text.Encodings.Web" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="System.Text.Json" Version="9.0.0-rc.1.24431.7" /> <PackageVersion Include="System.Text.Json" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" /> <PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.1.0" /> <PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.1.0" />
<PackageVersion Include="TimeZoneConverter" Version="6.1.0" /> <PackageVersion Include="TimeZoneConverter" Version="6.1.0" />

68
docs/en/Community-Articles/2024-10-11-NET-Aspire-vs-ABP-Studio/POST.md

@ -28,7 +28,7 @@ Here, a screenshot from the ABP Studio [Solution Runner panel](https://abp.io/do
## A Brief Comparison ## A Brief Comparison
Before deep diving details, I want to show a **table of features** to compare ABP Studio and .NET aspire side by side: Before deep diving details, I want to show a **table of features** to compare ABP Studio and .NET Aspire side by side:
![abp-studio-vs-net-aspire-comparison-table](abp-studio-vs-dotnet-aspire-comparison-table.png) ![abp-studio-vs-net-aspire-comparison-table](abp-studio-vs-dotnet-aspire-comparison-table.png)
@ -40,8 +40,8 @@ In the next sections, I will go through each feature and explain differences and
ABP Framework has tens of integration packages to 3rd-party libraries and services. .NET Aspire also has some library integrations. But these integrations have different purposes: ABP Framework has tens of integration packages to 3rd-party libraries and services. .NET Aspire also has some library integrations. But these integrations have different purposes:
* ABP Framework's integrations (like [MongoDB](https://abp.io/docs/latest/framework/data/mongodb), [RabbitMQ](https://abp.io/docs/latest/framework/infrastructure/background-jobs/rabbitmq), [Dapr](https://abp.io/docs/latest/framework/dapr), etc) are integrations for its abstractions and aimed to be used directly by your application code. They are complete and sophisticated integrations with the ABP Framework and your codebase. * **ABP Framework**'s integrations (like [MongoDB](https://abp.io/docs/latest/framework/data/mongodb), [RabbitMQ](https://abp.io/docs/latest/framework/infrastructure/background-jobs/rabbitmq), [Dapr](https://abp.io/docs/latest/framework/dapr), etc) are integrations for its abstractions and aimed to be **used directly by your application code**. They are complete and sophisticated integrations with the ABP Framework and your codebase.
* .NET Aspire's integrations (like [MongoDB](https://learn.microsoft.com/en-us/dotnet/aspire/database/mongodb-integration), [RabbitMQ](https://learn.microsoft.com/en-us/dotnet/aspire/messaging/rabbitmq-integration), [Dapr](https://learn.microsoft.com/en-us/dotnet/aspire/frameworks/dapr), etc), on the other hand, for simplifying configuration, service discovery, orchestration and monitoring of these tools within .NET Aspire host. Basically, these are mostly for integrating to .NET Aspire, not for integrating to your application. * **.NET Aspire**'s integrations (like [MongoDB](https://learn.microsoft.com/en-us/dotnet/aspire/database/mongodb-integration), [RabbitMQ](https://learn.microsoft.com/en-us/dotnet/aspire/messaging/rabbitmq-integration), [Dapr](https://learn.microsoft.com/en-us/dotnet/aspire/frameworks/dapr), etc), on the other hand, for simplifying configuration, service discovery, orchestration and monitoring of these tools within .NET Aspire host. Basically, these are mostly for **integrating to .NET Aspire**, not for integrating to your application.
For example, ABP's [MongoDB](https://abp.io/docs/latest/framework/data/mongodb) integration allows you to use MongoDB over [repository services](https://abp.io/docs/latest/framework/architecture/domain-driven-design/repositories), automatically handles database transactions, [audit logs](https://abp.io/docs/latest/framework/infrastructure/audit-logging), [event publishing](https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed) on data saves, dynamic [connection string](https://abp.io/docs/latest/framework/fundamentals/connection-strings) management, [multi-tenancy](https://abp.io/docs/latest/framework/architecture/multi-tenancy) integration and so on. For example, ABP's [MongoDB](https://abp.io/docs/latest/framework/data/mongodb) integration allows you to use MongoDB over [repository services](https://abp.io/docs/latest/framework/architecture/domain-driven-design/repositories), automatically handles database transactions, [audit logs](https://abp.io/docs/latest/framework/infrastructure/audit-logging), [event publishing](https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed) on data saves, dynamic [connection string](https://abp.io/docs/latest/framework/fundamentals/connection-strings) management, [multi-tenancy](https://abp.io/docs/latest/framework/architecture/multi-tenancy) integration and so on.
@ -49,29 +49,29 @@ On the other hand, .NET Aspire's [MongoDB](https://learn.microsoft.com/en-us/dot
### Starter Templates ### Starter Templates
Both of ABP Studio and .NET Aspire provide startup solution templates for new applications. However, there are huge differences between these startup solution templates and their purpose are completely different. Both of ABP Studio and .NET Aspire provide **startup solution templates for new applications**. However, there are huge differences between these startup solution templates and their purpose are completely different.
* ABP Studio provides production-ready and [advanced solution templates](https://abp.io/docs/latest/solution-templates) for layered, modular or microservice solution development. They are well configured for local development and deploying to Kubernetes and other production environments. They provide different UI and database options, many optional modules and configuration. For example, you can check the [microservice solution template](https://abp.io/docs/latest/solution-templates/microservice/overview) to see how sophisticated it is. * ABP Studio provides **production-ready** and [advanced solution templates](https://abp.io/docs/latest/solution-templates) for **layered**, **modular** or **microservice** solution development. They are well configured for **local development** and deploying to **Kubernetes** and other **production environments**. They provide different **UI and database options**, many optional modules and configuration. For example, you can check the [microservice solution template](https://abp.io/docs/latest/solution-templates/microservice/overview) to see how **sophisticated** it is.
* .NET Aspire's [project templates](https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/setup-tooling?tabs=windows&pivots=visual-studio#net-aspire-project-templates)' main purpose is to provide a minimal application structure that is pre-integrated to .NET Aspire libraries. * .NET Aspire's [project templates](https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/setup-tooling?tabs=windows&pivots=visual-studio#net-aspire-project-templates)' main purpose is to provide a minimal application structure that is **pre-integrated to .NET Aspire** libraries and configured for **local development** environment.
So, when you start with .NET Aspire project template, you will need to deal with a lot of work to make your solution production and enterprise ready. On the other hand, ABP Studio's solution templates are ready to lunch your system from the first day and they provide you a perfect starting point for your new business idea. So, when you start with .NET Aspire project template, you will need to deal with a lot of work to make your solution production and enterprise ready. On the other hand, ABP Studio's solution templates are ready to lunch your system from the first day and they provide you a perfect starting point for your new business idea.
### Monitoring & Application Running ### Monitoring & Application Running
Monitoring applications and services is an important requirement for building complex distributed systems. Both of ABP Studio and .NET Aspire provide excellent tools for that purpose. Monitoring applications and services is an important requirement for building **complex distributed systems**. Both of ABP Studio and .NET Aspire provide **excellent tools** for that purpose.
* ABP Studio's [Solution Runner panel](https://abp.io/docs/latest/studio/running-applications) provides a powerful UI to run and monitor application and services. You can see all HTTP requests, distributed events, exceptions and detailed application logs, trace and find problems in your system. You can use its fully functional built-in browser to navigate application UIs easily. You can also create multiple profiles to group and configure the applications for different teams. * ABP Studio's [Solution Runner panel](https://abp.io/docs/latest/studio/running-applications) provides a powerful UI to run and monitor application and services. You can see all HTTP requests, distributed events, exceptions and detailed application logs, trace and find problems in your system. You can use its fully functional built-in browser to navigate application UIs easily. You can also create multiple profiles to group and configure the applications for different teams.
* .NET Aspire's [dashboard](https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/dashboard/overview) can be used to see the states of the running applications and containers, explore their console output, logs, traces and metrics to understand what is happing in your distributed system. * .NET Aspire's [dashboard](https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/dashboard/overview) can be used to see the states of the running applications and containers, explore their console output, logs, traces and metrics to understand what is happing in your distributed system.
Both tools are pretty useful for monitoring. In addition to monitoring, ABP Studio offers an advanced UI to control the running applications, build, start and stop individually or by a group of applications. Both tools are pretty useful for monitoring. In addition to monitoring, **ABP Studio offers an advanced UI to control the running applications**, build, start and stop individually or by a group of applications.
### Architecting / Building Solutions ### Architecting / Building Solutions
One of the unique features of ABP Studio is that it is an architectural tool that helps you create the structure and architecture of your solution. You can create any kind of application, from single-layer simple web applications to layered multi-application solutions, from monolith modular to microservice systems. In the next section, I will briefly explains these architectural features. One of the unique features of **ABP Studio** is that it **is an architectural tool** that helps you create the structure and architecture of your solution. You can create any kind of application, from **single-layer** simple web applications to **layered multi-application** solutions, from **monolith modular** to **microservice** systems. In the next section, I will briefly explains these architectural features.
#### Building Modular Monolith Solutions #### Building Modular Monolith Solutions
With ABP Studio, you can create a new solution, create modules and establish relations (dependencies) between modules to architect your overall modular monolith system easily. With ABP Studio, you can create a new solution, **create modules and establish relations** (dependencies) between modules to architect your overall **modular monolith system** easily.
Here, a screenshot where we are adding an existing package reference to the Products module of a modular CRM solution: Here, a screenshot where we are adding an existing package reference to the Products module of a modular CRM solution:
@ -81,22 +81,58 @@ You can see the [Modular Application Development tutorial](https://abp.io/docs/l
#### Building Microservice Solutions #### Building Microservice Solutions
ABP Studio provides a full featured [microservice startup solution template](https://abp.io/docs/latest/solution-templates/microservice) and the fundamental tooling to build large-scale microservice systems. ABP Studio provides a full featured [microservice startup solution template](https://abp.io/docs/latest/solution-templates/microservice) and the fundamental tooling to build **large-scale microservice systems**.
Here a screenshot that shows how to add new microservices, API gateways or web applications to a microservice solution: Here a screenshot that shows how to add new microservices, API gateways or web applications to a microservice solution:
![abp-studio-add-new-microservice](abp-studio-add-new-microservice.png) ![abp-studio-add-new-microservice](abp-studio-add-new-microservice.png)
.NET Aspire has no such a feature and has no such a plan to provide that kind of architectural solution building experience.
### Kubernetes Integration ### Kubernetes Integration
Another great ABP Studio feature is [Kubernetes Integration](https://abp.io/docs/latest/studio/kubernetes). Another great ABP Studio feature is [Kubernetes Integration](https://abp.io/docs/latest/studio/kubernetes). It allows you to develop your distributed / microservice solutions as integrated to [Kubernetes](https://kubernetes.io/).
Here, a few tasks you can accomplish using ABP Studio's Kubernetes integration:
* **Build docker images** of your applications and services
* **Install and uninstall Helm charts** to your Kubernetes cluster
* **Connect to internal services** of your Kubernetes cluster
* **Monitor** services and applications that are running in your Kubernetes cluster
* **Intercept traffic** of a service and redirect requests to your local machine. In that way, you can develop, test and run individual services or applications in your local computer that is **fully integrated** to other services and applications running in Kubernetes.
ABP Studio's Kubernetes Integration makes microservice development so easy and comfortable. On the other hand, .NET Aspire has no such a Kubernetes integrated development experience.
## The ABP Platform
Until now, I directly compared ABP Studio and .NET Aspire features. .NET Aspire is directly built on .NET and ASP.NET Core. However, ABP Studio is not a standalone tool that is built on .NET and ASP.NET Core. It is built on the [ABP Platform](https://abp.io/) (which is built on .NET and ASP.NET Core).
The following diagram shows ABP Platform components at a glance:
![abp-overall-diagram](abp-overall-diagram.png)
TODO: ... So, when you use ABP Studio, you also take full power of the [open source ABP Framework](https://github.com/abpframework/abp) and other ABP Platform features.
## The ABP Framework ## ABP and .NET Aspire Integration
TODO: ... I have a good news to you. It is actually possible and pretty easy to make ABP Platform and .NET Aspire working together.
You can check [@berkansasmaz](https://abp.io/community/members/berkansasmaz)'s great article: **[How to use .NET Aspire with ABP framework](https://abp.io/community/articles/how-to-use-.net-aspire-with-abp-framework-h29km4kk)**.
## Licensing
ABP Studio has a Community Edition which is completely free and available to everyone. It includes many of the features I mentioned here. There is also a commercial edition that is included in [commercial ABP licenses](https://abp.io/pricing). You can [check that blog post](https://abp.io/blog/announcing-abp-studio-general-availability) which clearly explains the license differences and introduces the fundamental ABP Studio features.
On the other hand, .NET Aspire is a free tool developed and published by Microsoft. It has no commercial version.
## Conclusion ## Conclusion
TODO: ... Both .NET Aspire and ABP Studio serve distinct purposes, catering to different types of development environments. While .NET Aspire excels in simplifying cloud-native application setups and observability, ABP Studio provides a comprehensive framework for modular monoliths and microservice architectures with full-fledged enterprise level production-ready startup solution templates and integrated tools.
In the previous section, it was mentioned that it is possible to [use them together](https://abp.io/community/articles/how-to-use-.net-aspire-with-abp-framework-h29km4kk). You don't have to select one of them. However, in my opinion, when you use ABP Studio, you won't need .NET Aspire since ABP Studio can do everything and much more. If you have budget, I suggest to purchase a commercial ABP Studio [license](https://abp.io/pricing) so you can fully unlock its power.
## Resources / Further Reading
* [ABP Studio documentation](https://abp.io/docs/latest/studio)
* [.NET Aspire documentation](https://learn.microsoft.com/en-us/dotnet/aspire/)
* [How to use .NET Aspire with ABP framework](https://abp.io/community/articles/how-to-use-.net-aspire-with-abp-framework-h29km4kk)

BIN
docs/en/Community-Articles/2024-10-11-NET-Aspire-vs-ABP-Studio/abp-overall-diagram.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

BIN
docs/en/images/my-externa-logins.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

BIN
docs/en/images/new-external-login.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
docs/en/images/require-local-password-on-social-account-linking.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

22
docs/en/modules/account-pro.md

@ -119,7 +119,7 @@ Follow the steps below to install a new external/social login. We will show Face
#### Add the NuGet Package #### Add the NuGet Package
Add the [Microsoft.AspNetCore.Authentication.Facebook](https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.Facebook) package to your project. Based on your architecture, this can be `.Web`, `.IdentityServer` (for tiered setup) or `.Host` project. Add the [Microsoft.AspNetCore.Authentication.Facebook](https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.Facebook) package to your project. Based on your architecture, this can be `.Web`, `.AuthServer` (for tiered setup) or `.Host` project.
#### Configure the Provider #### Configure the Provider
@ -194,12 +194,26 @@ context.Services.AddAuthentication()
context.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IPostConfigureAccountExternalProviderOptions<OpenIdConnectOptions>, OpenIdConnectPostConfigureAccountExternalProviderOptions>()); context.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IPostConfigureAccountExternalProviderOptions<OpenIdConnectOptions>, OpenIdConnectPostConfigureAccountExternalProviderOptions>());
```` ````
#### For Tiered / Separate IdentityServer Solutions #### For Tiered / Separate AuthServer Solutions
If your `.IdentityServer` is separated from the `.Host` project, then the `.Host` project should also be configured. If your `.AuthServer` is separated from the `.Host` project, then the `.Host` project should also be configured.
* Add the [Microsoft.AspNetCore.Authentication.Facebook](https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.Facebook) package to your `.Host` project. * Add the [Microsoft.AspNetCore.Authentication.Facebook](https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.Facebook) package to your `.Host` project.
* Add `WithDynamicOptions<FacebookOptions>()` configuration into the `ConfigureServices` method of your module (just copy the all code above and remove the `.AddFacebook(...)` part since it is only needed in the IdentityServer side). * Add `WithDynamicOptions<FacebookOptions>()` configuration into the `ConfigureServices` method of your module (just copy the all code above and remove the `.AddFacebook(...)` part since it is only needed in the AuthServer side).
## Manage External Logins
You can link an external login in `Account/ExternalLogins` page of `Account` module.
![my-externa-logins](../images/my-externa-logins.png)
![new-external-login](../images/new-external-login.png)
### Social Account Security Setting
Users who register via both local registration and external/social login using the same email address will be required to enter their local password on the first external/social login.
![require-local-password-on-social-account-linking](../images/require-local-password-on-social-account-linking.png)
## Internals ## Internals

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs

@ -364,12 +364,14 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
attrList.Add("data-parent-el", options.ParentEl); attrList.Add("data-parent-el", options.ParentEl);
} }
#pragma warning disable CS0618 // Type or member is obsolete
if (!options.DateFormat.IsNullOrEmpty()) if (!options.DateFormat.IsNullOrEmpty())
{ {
attrList.Add("data-date-format", options.DateFormat); attrList.Add("data-date-format", options.DateFormat);
} }
#pragma warning restore CS0618 // Type or member is obsolete
if(!options.VisibleDateFormat.IsNullOrEmpty())
if (!options.VisibleDateFormat.IsNullOrEmpty())
{ {
attrList.Add("data-visible-date-format", options.VisibleDateFormat); attrList.Add("data-visible-date-format", options.VisibleDateFormat);
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcModule.cs

@ -197,8 +197,8 @@ public class AbpAspNetCoreMvcModule : AbpModule
options.EndpointConfigureActions.Add(endpointContext => options.EndpointConfigureActions.Add(endpointContext =>
{ {
endpointContext.Endpoints.MapControllerRoute("defaultWithArea", "{area}/{controller=Home}/{action=Index}/{id?}"); endpointContext.Endpoints.MapControllerRoute("defaultWithArea", "{area}/{controller=Home}/{action=Index}/{id?}");
endpointContext.Endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}"); endpointContext.Endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}").WithStaticAssets();
endpointContext.Endpoints.MapRazorPages(); endpointContext.Endpoints.MapRazorPages().WithStaticAssets();
}); });
}); });

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs

@ -77,7 +77,7 @@ public class AbpExceptionFilter : IAsyncExceptionFilter, IAbpFilter, ITransientD
{ {
if (!context.HttpContext.Response.HasStarted) if (!context.HttpContext.Response.HasStarted)
{ {
context.HttpContext.Response.Headers.Add(AbpHttpConsts.AbpErrorFormat, "true"); context.HttpContext.Response.Headers.Append(AbpHttpConsts.AbpErrorFormat, "true");
context.HttpContext.Response.StatusCode = (int)context context.HttpContext.Response.StatusCode = (int)context
.GetRequiredService<IHttpExceptionStatusCodeFinder>() .GetRequiredService<IHttpExceptionStatusCodeFinder>()
.GetStatusCode(context.HttpContext, context.Exception); .GetStatusCode(context.HttpContext, context.Exception);

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs

@ -106,7 +106,7 @@ public class AbpExceptionPageFilter : IAsyncPageFilter, IAbpFilter, ITransientDe
{ {
if (!context.HttpContext.Response.HasStarted) if (!context.HttpContext.Response.HasStarted)
{ {
context.HttpContext.Response.Headers.Add(AbpHttpConsts.AbpErrorFormat, "true"); context.HttpContext.Response.Headers.Append(AbpHttpConsts.AbpErrorFormat, "true");
context.HttpContext.Response.StatusCode = (int)context context.HttpContext.Response.StatusCode = (int)context
.GetRequiredService<IHttpExceptionStatusCodeFinder>() .GetRequiredService<IHttpExceptionStatusCodeFinder>()
.GetStatusCode(context.HttpContext, context.Exception!); .GetStatusCode(context.HttpContext, context.Exception!);

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowActionFilter.cs

@ -106,7 +106,7 @@ public class AbpUowActionFilter : IAsyncActionFilter, IAbpFilter, ITransientDepe
{ {
await currentUow.SaveChangesAsync(cancellationToken); await currentUow.SaveChangesAsync(cancellationToken);
} }
catch (Exception e) catch (Exception)
{ {
await currentUow.RollbackAsync(cancellationToken); await currentUow.RollbackAsync(cancellationToken);
throw; throw;

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Uow/AbpUowPageFilter.cs

@ -112,7 +112,7 @@ public class AbpUowPageFilter : IAsyncPageFilter, IAbpFilter, ITransientDependen
{ {
await currentUow.SaveChangesAsync(cancellationToken); await currentUow.SaveChangesAsync(cancellationToken);
} }
catch (Exception e) catch (Exception)
{ {
await currentUow.RollbackAsync(cancellationToken); await currentUow.RollbackAsync(cancellationToken);
throw; throw;

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Validation/ValidationAttributeHelper.cs

@ -30,7 +30,7 @@ public static class ValidationAttributeHelper
var errorMessageString = ValidationAttributeErrorMessageStringProperty.GetValue(validationAttribute) as string; var errorMessageString = ValidationAttributeErrorMessageStringProperty.GetValue(validationAttribute) as string;
validationAttribute.ErrorMessage = errorMessageString; validationAttribute.ErrorMessage = errorMessageString;
} }
catch (Exception e) catch (Exception)
{ {
// ignored // ignored
} }

4
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs

@ -82,8 +82,8 @@ public class AbpExceptionHandlingMiddleware : AbpMiddlewareBase, ITransientDepen
httpContext.Response.Clear(); httpContext.Response.Clear();
httpContext.Response.StatusCode = (int)statusCodeFinder.GetStatusCode(httpContext, exception); httpContext.Response.StatusCode = (int)statusCodeFinder.GetStatusCode(httpContext, exception);
httpContext.Response.OnStarting(_clearCacheHeadersDelegate, httpContext.Response); httpContext.Response.OnStarting(_clearCacheHeadersDelegate, httpContext.Response);
httpContext.Response.Headers.Add(AbpHttpConsts.AbpErrorFormat, "true"); httpContext.Response.Headers.Append(AbpHttpConsts.AbpErrorFormat, "true");
httpContext.Response.Headers.Add("Content-Type", "application/json"); httpContext.Response.Headers.Append("Content-Type", "application/json");
await httpContext.Response.WriteAsync( await httpContext.Response.WriteAsync(
jsonSerializer.Serialize( jsonSerializer.Serialize(

1
framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/IPermissionDefinitionContext.cs

@ -32,7 +32,6 @@ public interface IPermissionDefinitionContext
/// Throws <see cref="AbpException"/> if there is a group with the name. /// Throws <see cref="AbpException"/> if there is a group with the name.
/// <param name="name">Name of the group</param> /// <param name="name">Name of the group</param>
/// <param name="displayName">Localized display name of the group</param> /// <param name="displayName">Localized display name of the group</param>
/// <param name="multiTenancySide">Select a multi-tenancy side</param>
/// </summary> /// </summary>
PermissionGroupDefinition AddGroup( PermissionGroupDefinition AddGroup(
[NotNull] string name, [NotNull] string name,

2
framework/src/Volo.Abp.BlazoriseUI/Components/UiNotificationAlert.razor

@ -1 +1 @@
<SnackbarStack @ref="SnackbarStack" Location="SnackbarStackLocation.End" Multiline="true" DelayCloseOnClick="true" DelayCloseOnClickInterval="10000" Closed="@OnSnackbarClosed" /> <SnackbarStack @ref="SnackbarStack" Location="SnackbarStackLocation.BottomEnd" Multiline="true" DelayCloseOnClick="true" DelayCloseOnClickInterval="10000" Closed="@OnSnackbarClosed" />

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs

@ -151,7 +151,7 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien
var redis = await ConnectionMultiplexer.ConnectAsync("127.0.0.1", options => options.ConnectTimeout = 3000); var redis = await ConnectionMultiplexer.ConnectAsync("127.0.0.1", options => options.ConnectTimeout = 3000);
isConnected = redis.IsConnected; isConnected = redis.IsConnected;
} }
catch (Exception e) catch (Exception)
{ {
// ignored // ignored
} }

26
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs

@ -81,7 +81,7 @@ public abstract class ProjectCreationCommandBase
if (version != null) if (version != null)
{ {
Logger.LogInformation("Version: " + version); Logger.LogInformation($"Version: {version}");
} }
var preview = commandLineArgs.Options.ContainsKey(Options.Preview.Long); var preview = commandLineArgs.Options.ContainsKey(Options.Preview.Long);
@ -110,25 +110,25 @@ public abstract class ProjectCreationCommandBase
var databaseProvider = GetDatabaseProvider(commandLineArgs); var databaseProvider = GetDatabaseProvider(commandLineArgs);
if (databaseProvider != DatabaseProvider.NotSpecified) if (databaseProvider != DatabaseProvider.NotSpecified)
{ {
Logger.LogInformation("Database provider: " + databaseProvider); Logger.LogInformation($"Database provider: {databaseProvider}");
} }
var connectionString = GetConnectionString(commandLineArgs); var connectionString = GetConnectionString(commandLineArgs);
if (connectionString != null) if (connectionString != null)
{ {
Logger.LogInformation("Connection string: " + connectionString); Logger.LogInformation($"Connection string: {connectionString}");
} }
var databaseManagementSystem = GetDatabaseManagementSystem(commandLineArgs); var databaseManagementSystem = GetDatabaseManagementSystem(commandLineArgs);
if (databaseManagementSystem != DatabaseManagementSystem.NotSpecified) if (databaseManagementSystem != DatabaseManagementSystem.NotSpecified)
{ {
Logger.LogInformation("DBMS: " + databaseManagementSystem); Logger.LogInformation($"DBMS: {databaseManagementSystem}");
} }
var uiFramework = GetUiFramework(commandLineArgs, template); var uiFramework = GetUiFramework(commandLineArgs, template);
if (uiFramework != UiFramework.NotSpecified) if (uiFramework != UiFramework.NotSpecified)
{ {
Logger.LogInformation("UI Framework: " + uiFramework); Logger.LogInformation($"UI Framework: {uiFramework}");
} }
var publicWebSite = uiFramework != UiFramework.None && commandLineArgs.Options.ContainsKey(Options.PublicWebSite.Long); var publicWebSite = uiFramework != UiFramework.None && commandLineArgs.Options.ContainsKey(Options.PublicWebSite.Long);
@ -140,25 +140,25 @@ public abstract class ProjectCreationCommandBase
var mobileApp = GetMobilePreference(commandLineArgs, template); var mobileApp = GetMobilePreference(commandLineArgs, template);
if (mobileApp != MobileApp.None) if (mobileApp != MobileApp.None)
{ {
Logger.LogInformation("Mobile App: " + mobileApp); Logger.LogInformation($"Mobile App: {mobileApp}");
} }
var gitHubAbpLocalRepositoryPath = commandLineArgs.Options.GetOrNull(Options.GitHubAbpLocalRepositoryPath.Long); var gitHubAbpLocalRepositoryPath = commandLineArgs.Options.GetOrNull(Options.GitHubAbpLocalRepositoryPath.Long);
if (gitHubAbpLocalRepositoryPath != null) if (gitHubAbpLocalRepositoryPath != null)
{ {
Logger.LogInformation("GitHub Abp Local Repository Path: " + gitHubAbpLocalRepositoryPath); Logger.LogInformation($"GitHub Abp Local Repository Path: {gitHubAbpLocalRepositoryPath}");
} }
var gitHubVoloLocalRepositoryPath = commandLineArgs.Options.GetOrNull(Options.GitHubVoloLocalRepositoryPath.Long); var gitHubVoloLocalRepositoryPath = commandLineArgs.Options.GetOrNull(Options.GitHubVoloLocalRepositoryPath.Long);
if (gitHubVoloLocalRepositoryPath != null) if (gitHubVoloLocalRepositoryPath != null)
{ {
Logger.LogInformation("GitHub Volo Local Repository Path: " + gitHubVoloLocalRepositoryPath); Logger.LogInformation($"GitHub Volo Local Repository Path: {gitHubVoloLocalRepositoryPath}");
} }
var templateSource = commandLineArgs.Options.GetOrNull(Options.TemplateSource.Short, Options.TemplateSource.Long); var templateSource = commandLineArgs.Options.GetOrNull(Options.TemplateSource.Short, Options.TemplateSource.Long);
if (templateSource != null) if (templateSource != null)
{ {
Logger.LogInformation("Template Source: " + templateSource); Logger.LogInformation($"Template Source: {templateSource}");
} }
var createSolutionFolder = GetCreateSolutionFolderPreference(commandLineArgs); var createSolutionFolder = GetCreateSolutionFolderPreference(commandLineArgs);
@ -216,7 +216,7 @@ public abstract class ProjectCreationCommandBase
IO.DirectoryHelper.CreateIfNotExists(outputFolder); IO.DirectoryHelper.CreateIfNotExists(outputFolder);
Logger.LogInformation("Output folder: " + outputFolder); Logger.LogInformation($"Output folder: {outputFolder}");
if (connectionString == null && if (connectionString == null &&
databaseManagementSystem != DatabaseManagementSystem.NotSpecified && databaseManagementSystem != DatabaseManagementSystem.NotSpecified &&
@ -309,10 +309,7 @@ public abstract class ProjectCreationCommandBase
bool isTiered, bool isTiered,
CommandLineArgs commandLineArgs) CommandLineArgs commandLineArgs)
{ {
#if !DEBUG
#if DEBUG
return;
#endif
if (AppTemplateBase.IsAppTemplate(template)) if (AppTemplateBase.IsAppTemplate(template))
{ {
var isCommercial = template == AppProTemplate.TemplateName; var isCommercial = template == AppProTemplate.TemplateName;
@ -322,6 +319,7 @@ public abstract class ProjectCreationCommandBase
{ {
OpenMicroserviceDocumentPage(); OpenMicroserviceDocumentPage();
} }
#endif
} }
protected UiFramework FindMicroserviceSolutionUiFramework(string outputFolderRoot) protected UiFramework FindMicroserviceSolutionUiFramework(string outputFolderRoot)

8
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/Services/DotnetEfToolManager.cs

@ -20,12 +20,10 @@ public class DotnetEfToolManager : ISingletonDependency
public async Task BeSureInstalledAsync() public async Task BeSureInstalledAsync()
{ {
if (IsDotNetEfToolInstalled()) if (!IsDotNetEfToolInstalled())
{ {
return; InstallDotnetEfTool();
} }
InstallDotnetEfTool();
} }
private bool IsDotNetEfToolInstalled() private bool IsDotNetEfToolInstalled()

4
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs

@ -412,7 +412,7 @@ public class TranslateCommand : IConsoleCommand, ITransientDependency
{ {
jObject = JObject.Parse(json); jObject = JObject.Parse(json);
} }
catch (Exception e) catch (Exception)
{ {
return null; return null;
} }
@ -490,7 +490,7 @@ public class TranslateCommand : IConsoleCommand, ITransientDependency
var jsonString = File.ReadAllText(jsonFile); var jsonString = File.ReadAllText(jsonFile);
_ = JsonLocalizationDictionaryBuilder.BuildFromJsonString(jsonString); _ = JsonLocalizationDictionaryBuilder.BuildFromJsonString(jsonString);
} }
catch (Exception e) catch (Exception)
{ {
Logger.LogError($"Invalid json file: {jsonFile}"); Logger.LogError($"Invalid json file: {jsonFile}");
hasInvalidJsonFile = true; hasInvalidJsonFile = true;

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntry.cs

@ -97,7 +97,9 @@ public class FileEntry
if (Bytes[0] == 0x2b && Bytes[1] == 0x2f && Bytes[2] == 0x76) if (Bytes[0] == 0x2b && Bytes[1] == 0x2f && Bytes[2] == 0x76)
{ {
#pragma warning disable SYSLIB0001 // The UTF-7 encoding is insecure
return Encoding.UTF7; return Encoding.UTF7;
#pragma warning restore SYSLIB0001 // The UTF-7 encoding is insecure
} }
if (Bytes[0] == 0xef && Bytes[1] == 0xbb && Bytes[2] == 0xbf) if (Bytes[0] == 0xef && Bytes[1] == 0xbb && Bytes[2] == 0xbf)

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs

@ -54,7 +54,7 @@ public class NpmPackagesUpdater : ITransientDependency
{ {
var fileList = _packageJsonFileFinder.Find(rootDirectory); var fileList = _packageJsonFileFinder.Find(rootDirectory);
if (!fileList.Any()) if (fileList.Count == 0)
{ {
return; return;
} }
@ -95,8 +95,8 @@ public class NpmPackagesUpdater : ITransientDependency
if (!IsAngularProject(fileDirectory)) if (!IsAngularProject(fileDirectory))
{ {
Thread.Sleep(1000); await Task.Delay(1000);
RunInstallLibsAsync(fileDirectory); await RunInstallLibsAsync(fileDirectory);
} }
} }
} }

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs

@ -259,11 +259,11 @@ public class ProjectNugetPackageAdder : ITransientDependency
if (useDotnetCliToInstall) if (useDotnetCliToInstall)
{ {
AddUsingDotnetCli(package, version); await AddUsingDotnetCli(package, version);
} }
else else
{ {
AddToCsprojManuallyAsync(projectFile, package, version); await AddToCsprojManuallyAsync(projectFile, package, version);
} }
var moduleFiles = ModuleClassFinder.Find(projectFile, "AbpModule"); var moduleFiles = ModuleClassFinder.Find(projectFile, "AbpModule");
@ -291,7 +291,7 @@ public class ProjectNugetPackageAdder : ITransientDependency
{ {
await RunBundleForBlazorAsync(projectFile); await RunBundleForBlazorAsync(projectFile);
} }
catch (Exception e) catch (Exception)
{ {
Logger.LogWarning("Couldn't run bundle for blazor."); Logger.LogWarning("Couldn't run bundle for blazor.");
} }

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs

@ -391,7 +391,7 @@ public class SolutionModuleAdder : ITransientDependency
continue; continue;
} }
RemoveProjectFromSolutionAsync(moduleSolutionFile, projectToRemove); await RemoveProjectFromSolutionAsync(moduleSolutionFile, projectToRemove);
} }
} }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/DependencyInjection/IAbpCommonDbContextRegistrationOptionsBuilder.cs

@ -20,23 +20,23 @@ public interface IAbpCommonDbContextRegistrationOptionsBuilder
/// <summary> /// <summary>
/// Registers default repositories for all the entities in this DbContext. /// Registers default repositories for all the entities in this DbContext.
/// Default repositories will use given <see cref="TDefaultRepositoryDbContext"/>. /// Default repositories will use given <typeparamref name="TDefaultRepositoryDbContext"/>.
/// </summary> /// </summary>
/// <typeparam name="TDefaultRepositoryDbContext">DbContext type that will be used by default repositories</typeparam> /// <typeparam name="TDefaultRepositoryDbContext">DbContext type that will be used by default repositories</typeparam>
/// <param name="includeAllEntities"> /// <param name="includeAllEntities">
/// Registers repositories only for aggregate root entities by default. /// Registers repositories only for aggregate root entities by default.
/// Set <see cref="includeAllEntities"/> to true to include all entities. /// Set <paramref name="includeAllEntities"/> to true to include all entities.
/// </param> /// </param>
IAbpCommonDbContextRegistrationOptionsBuilder AddDefaultRepositories<TDefaultRepositoryDbContext>(bool includeAllEntities = false); IAbpCommonDbContextRegistrationOptionsBuilder AddDefaultRepositories<TDefaultRepositoryDbContext>(bool includeAllEntities = false);
/// <summary> /// <summary>
/// Registers default repositories for all the entities in this DbContext. /// Registers default repositories for all the entities in this DbContext.
/// Default repositories will use given <see cref="defaultRepositoryDbContextType"/>. /// Default repositories will use given <paramref name="defaultRepositoryDbContextType"/>.
/// </summary> /// </summary>
/// <param name="defaultRepositoryDbContextType">DbContext type that will be used by default repositories</param> /// <param name="defaultRepositoryDbContextType">DbContext type that will be used by default repositories</param>
/// <param name="includeAllEntities"> /// <param name="includeAllEntities">
/// Registers repositories only for aggregate root entities by default. /// Registers repositories only for aggregate root entities by default.
/// Set <see cref="includeAllEntities"/> to true to include all entities. /// Set <paramref name="includeAllEntities"/> to true to include all entities.
/// </param> /// </param>
IAbpCommonDbContextRegistrationOptionsBuilder AddDefaultRepositories(Type defaultRepositoryDbContextType, bool includeAllEntities = false); IAbpCommonDbContextRegistrationOptionsBuilder AddDefaultRepositories(Type defaultRepositoryDbContextType, bool includeAllEntities = false);

4
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRootWithUser.cs

@ -4,7 +4,7 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing; namespace Volo.Abp.Domain.Entities.Auditing;
/// <summary> /// <summary>
/// This class can be used to simplify implementing <see cref="IAuditedObjectObject{TUser}"/> for aggregate roots. /// This class can be used to simplify implementing <see cref="IAuditedObject{TUser}"/> for aggregate roots.
/// </summary> /// </summary>
/// <typeparam name="TUser">Type of the user</typeparam> /// <typeparam name="TUser">Type of the user</typeparam>
[Serializable] [Serializable]
@ -19,7 +19,7 @@ public abstract class AuditedAggregateRootWithUser<TUser> : AuditedAggregateRoot
} }
/// <summary> /// <summary>
/// This class can be used to simplify implementing <see cref="IAuditedObjectObject{TUser}"/> for aggregate roots. /// This class can be used to simplify implementing <see cref="IAuditedObject{TUser}"/> for aggregate roots.
/// </summary> /// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam> /// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam> /// <typeparam name="TUser">Type of the user</typeparam>

4
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRootWithUser.cs

@ -4,7 +4,7 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing; namespace Volo.Abp.Domain.Entities.Auditing;
/// <summary> /// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAuditedObjectObject{TCreator}"/> for aggregate roots. /// This class can be used to simplify implementing <see cref="ICreationAuditedObject{TCreator}"/> for aggregate roots.
/// </summary> /// </summary>
/// <typeparam name="TUser">Type of the user</typeparam> /// <typeparam name="TUser">Type of the user</typeparam>
[Serializable] [Serializable]
@ -15,7 +15,7 @@ public abstract class CreationAuditedAggregateRootWithUser<TUser> : CreationAudi
} }
/// <summary> /// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAuditedObjectObject{TCreator}"/> for aggregate roots. /// This class can be used to simplify implementing <see cref="ICreationAuditedObject{TCreator}"/> for aggregate roots.
/// </summary> /// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam> /// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam> /// <typeparam name="TUser">Type of the user</typeparam>

2
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntityWithUser.cs

@ -15,7 +15,7 @@ public abstract class CreationAuditedEntityWithUser<TUser> : CreationAuditedEnti
} }
/// <summary> /// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAuditedObjectObject{TCreator}"/>. /// This class can be used to simplify implementing <see cref="ICreationAuditedObject{TCreator}"/>.
/// </summary> /// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam> /// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam> /// <typeparam name="TUser">Type of the user</typeparam>

2
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntityWithUser.cs

@ -22,7 +22,7 @@ public abstract class FullAuditedEntityWithUser<TUser> : FullAuditedEntity, IFul
} }
/// <summary> /// <summary>
/// Implements <see cref="IFullAuditedObjectObject{TUser}"/> to be a base class for full-audited entities. /// Implements <see cref="IFullAuditedObject{TUser}"/> to be a base class for full-audited entities.
/// </summary> /// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam> /// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam> /// <typeparam name="TUser">Type of the user</typeparam>

2
framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/AbpEmailingModule.cs

@ -13,7 +13,9 @@ namespace Volo.Abp.Emailing;
typeof(AbpVirtualFileSystemModule), typeof(AbpVirtualFileSystemModule),
typeof(AbpBackgroundJobsAbstractionsModule), typeof(AbpBackgroundJobsAbstractionsModule),
typeof(AbpLocalizationModule), typeof(AbpLocalizationModule),
#pragma warning disable CS0618 // Type or member is obsolete
typeof(AbpTextTemplatingModule) typeof(AbpTextTemplatingModule)
#pragma warning restore CS0618 // Type or member is obsolete
)] )]
public class AbpEmailingModule : AbpModule public class AbpEmailingModule : AbpModule
{ {

2
framework/src/Volo.Abp.EntityFrameworkCore.MySQL/Volo/Abp/EntityFrameworkCore/ConnectionStrings/MySqlConnectionStringChecker.cs

@ -32,7 +32,7 @@ public class MySqlConnectionStringChecker : IConnectionStringChecker, ITransient
return result; return result;
} }
catch (Exception e) catch (Exception)
{ {
return result; return result;
} }

2
framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo/Abp/EntityFrameworkCore/ConnectionStrings/OracleDevartConnectionStringChecker.cs

@ -28,7 +28,7 @@ public class OracleDevartConnectionStringChecker : IConnectionStringChecker, ITr
return result; return result;
} }
catch (Exception e) catch (Exception)
{ {
return result; return result;
} }

2
framework/src/Volo.Abp.EntityFrameworkCore.Oracle/Volo/Abp/EntityFrameworkCore/ConnectionStrings/OracleConnectionStringChecker.cs

@ -28,7 +28,7 @@ public class OracleConnectionStringChecker : IConnectionStringChecker, ITransien
return result; return result;
} }
catch (Exception e) catch (Exception)
{ {
return result; return result;
} }

2
framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo/Abp/EntityFrameworkCore/ConnectionStrings/NpgsqlConnectionStringChecker.cs

@ -32,7 +32,7 @@ public class NpgsqlConnectionStringChecker : IConnectionStringChecker, ITransien
return result; return result;
} }
catch (Exception e) catch (Exception)
{ {
return result; return result;
} }

2
framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo/Abp/EntityFrameworkCore/ConnectionStrings/SqlServerConnectionStringChecker.cs

@ -32,7 +32,7 @@ public class SqlServerConnectionStringChecker : IConnectionStringChecker, ITrans
return result; return result;
} }
catch (Exception e) catch (Exception)
{ {
return result; return result;
} }

2
framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/ConnectionStrings/SqliteConnectionStringChecker.cs

@ -24,7 +24,7 @@ public class SqliteConnectionStringChecker : IConnectionStringChecker, ITransien
return result; return result;
} }
catch (Exception e) catch (Exception)
{ {
return result; return result;
} }

4
framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/DistributedEventBusBase.cs

@ -224,7 +224,7 @@ public abstract class DistributedEventBusBase : EventBusBase, IDistributedEventB
{ {
await LocalEventBus.PublishAsync(distributedEvent); await LocalEventBus.PublishAsync(distributedEvent);
} }
catch (Exception _) catch (Exception)
{ {
// ignored // ignored
} }
@ -236,7 +236,7 @@ public abstract class DistributedEventBusBase : EventBusBase, IDistributedEventB
{ {
await LocalEventBus.PublishAsync(distributedEvent); await LocalEventBus.PublishAsync(distributedEvent);
} }
catch (Exception _) catch (Exception)
{ {
// ignored // ignored
} }

6
framework/src/Volo.Abp.Guids/Volo/Abp/Guids/SequentialGuidType.cs

@ -1,4 +1,6 @@
namespace Volo.Abp.Guids; using System;
namespace Volo.Abp.Guids;
/// <summary> /// <summary>
/// Describes the type of a sequential GUID value. /// Describes the type of a sequential GUID value.
@ -12,7 +14,7 @@ public enum SequentialGuidType
SequentialAsString, SequentialAsString,
/// <summary> /// <summary>
/// The GUID should be sequential when formatted using the <see cref="Guid.ToByteArray" /> method. /// The GUID should be sequential when formatted using the <see cref="Guid.ToByteArray()" /> method.
/// Used by Oracle. /// Used by Oracle.
/// </summary> /// </summary>
SequentialAsBinary, SequentialAsBinary,

2
framework/src/Volo.Abp.Json.Newtonsoft/Volo/Abp/Json/Newtonsoft/AbpNewtonsoftJsonSerializer.cs

@ -45,6 +45,7 @@ public class AbpNewtonsoftJsonSerializer : IJsonSerializer, ITransientDependency
indented indented
}, _ => }, _ =>
{ {
#pragma warning disable CS0618 // Type or member is obsolete
var settings = new JsonSerializerSettings var settings = new JsonSerializerSettings
{ {
Binder = Options.Value.JsonSerializerSettings.Binder, Binder = Options.Value.JsonSerializerSettings.Binder,
@ -80,6 +81,7 @@ public class AbpNewtonsoftJsonSerializer : IJsonSerializer, ITransientDependency
TypeNameHandling = Options.Value.JsonSerializerSettings.TypeNameHandling, TypeNameHandling = Options.Value.JsonSerializerSettings.TypeNameHandling,
TypeNameAssemblyFormatHandling = Options.Value.JsonSerializerSettings.TypeNameAssemblyFormatHandling TypeNameAssemblyFormatHandling = Options.Value.JsonSerializerSettings.TypeNameAssemblyFormatHandling
}; };
#pragma warning restore CS0618 // Type or member is obsolete
if (!camelCase) if (!camelCase)
{ {

2
framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/ConnectionStrings/MongoDBConnectionStringChecker.cs

@ -22,7 +22,7 @@ public class MongoDBConnectionStringChecker : IConnectionStringChecker, ITransie
DatabaseExists = true DatabaseExists = true
}); });
} }
catch (Exception e) catch (Exception)
{ {
return Task.FromResult(new AbpConnectionStringCheckResult()); return Task.FromResult(new AbpConnectionStringCheckResult());
} }

2
framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs

@ -242,7 +242,7 @@ public class UnitOfWorkMongoDbContextProvider<TMongoDbContext> : IMongoDbContext
{ {
session.StartTransaction(); session.StartTransaction();
} }
catch (NotSupportedException e) catch (NotSupportedException)
{ {
Logger.LogWarning(TransactionsNotSupportedWarningMessage); Logger.LogWarning(TransactionsNotSupportedWarningMessage);

8
framework/src/Volo.Abp.ObjectMapping/Volo/Abp/ObjectMapping/IObjectMapper.cs

@ -11,7 +11,7 @@ public interface IObjectMapper
IAutoObjectMappingProvider AutoObjectMappingProvider { get; } IAutoObjectMappingProvider AutoObjectMappingProvider { get; }
/// <summary> /// <summary>
/// Converts an object to another. Creates a new object of <see cref="TDestination"/>. /// Converts an object to another. Creates a new object of <typeparamref name="TDestination" />.
/// </summary> /// </summary>
/// <typeparam name="TDestination">Type of the destination object</typeparam> /// <typeparam name="TDestination">Type of the destination object</typeparam>
/// <typeparam name="TSource">Type of the source object</typeparam> /// <typeparam name="TSource">Type of the source object</typeparam>
@ -25,7 +25,7 @@ public interface IObjectMapper
/// <typeparam name="TDestination">Destination type</typeparam> /// <typeparam name="TDestination">Destination type</typeparam>
/// <param name="source">Source object</param> /// <param name="source">Source object</param>
/// <param name="destination">Destination object</param> /// <param name="destination">Destination object</param>
/// <returns>Returns the same <see cref="destination"/> object after mapping operation</returns> /// <returns>Returns the same <paramref name="destination" /> object after mapping operation</returns>
TDestination Map<TSource, TDestination>(TSource source, TDestination destination); TDestination Map<TSource, TDestination>(TSource source, TDestination destination);
} }
@ -46,7 +46,7 @@ public interface IObjectMapper<TContext> : IObjectMapper
public interface IObjectMapper<in TSource, TDestination> public interface IObjectMapper<in TSource, TDestination>
{ {
/// <summary> /// <summary>
/// Converts an object to another. Creates a new object of <see cref="TDestination"/>. /// Converts an object to another. Creates a new object of <typeparamref name="TDestination"/>.
/// </summary> /// </summary>
/// <param name="source">Source object</param> /// <param name="source">Source object</param>
TDestination Map(TSource source); TDestination Map(TSource source);
@ -56,6 +56,6 @@ public interface IObjectMapper<in TSource, TDestination>
/// </summary> /// </summary>
/// <param name="source">Source object</param> /// <param name="source">Source object</param>
/// <param name="destination">Destination object</param> /// <param name="destination">Destination object</param>
/// <returns>Returns the same <see cref="destination"/> object after mapping operation</returns> /// <returns>Returns the same <paramref name="destination"/> object after mapping operation</returns>
TDestination Map(TSource source, TDestination destination); TDestination Map(TSource source, TDestination destination);
} }

108
framework/src/Volo.Abp.Security/Volo/Abp/Security/Encryption/StringEncryptionService.cs

@ -26,38 +26,21 @@ public class StringEncryptionService : IStringEncryptionService, ITransientDepen
return null; return null;
} }
if (passPhrase == null) passPhrase ??= Options.DefaultPassPhrase;
{ salt ??= Options.DefaultSalt;
passPhrase = Options.DefaultPassPhrase;
}
if (salt == null)
{
salt = Options.DefaultSalt;
}
var plainTextBytes = Encoding.UTF8.GetBytes(plainText); var plainTextBytes = Encoding.UTF8.GetBytes(plainText);
using (var password = new Rfc2898DeriveBytes(passPhrase, salt)) using var password = new Rfc2898DeriveBytes(passPhrase, salt);
{ var keyBytes = password.GetBytes(Options.Keysize / 8);
var keyBytes = password.GetBytes(Options.Keysize / 8); using var symmetricKey = Aes.Create();
using (var symmetricKey = Aes.Create()) symmetricKey.Mode = CipherMode.CBC;
{ using var encryptor = symmetricKey.CreateEncryptor(keyBytes, Options.InitVectorBytes);
symmetricKey.Mode = CipherMode.CBC; using var memoryStream = new MemoryStream();
using (var encryptor = symmetricKey.CreateEncryptor(keyBytes, Options.InitVectorBytes)) using var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);
{ cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
using (var memoryStream = new MemoryStream()) cryptoStream.FlushFinalBlock();
{ var cipherTextBytes = memoryStream.ToArray();
using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) return Convert.ToBase64String(cipherTextBytes);
{
cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
cryptoStream.FlushFinalBlock();
var cipherTextBytes = memoryStream.ToArray();
return Convert.ToBase64String(cipherTextBytes);
}
}
}
}
}
} }
public virtual string? Decrypt(string? cipherText, string? passPhrase = null, byte[]? salt = null) public virtual string? Decrypt(string? cipherText, string? passPhrase = null, byte[]? salt = null)
@ -67,53 +50,36 @@ public class StringEncryptionService : IStringEncryptionService, ITransientDepen
return null; return null;
} }
if (passPhrase == null) passPhrase ??= Options.DefaultPassPhrase;
{ salt ??= Options.DefaultSalt;
passPhrase = Options.DefaultPassPhrase;
}
if (salt == null)
{
salt = Options.DefaultSalt;
}
var cipherTextBytes = Convert.FromBase64String(cipherText); var cipherTextBytes = Convert.FromBase64String(cipherText);
using (var password = new Rfc2898DeriveBytes(passPhrase, salt)) using var password = new Rfc2898DeriveBytes(passPhrase, salt);
var keyBytes = password.GetBytes(Options.Keysize / 8);
using var symmetricKey = Aes.Create();
symmetricKey.Mode = CipherMode.CBC;
using var decryptor = symmetricKey.CreateDecryptor(keyBytes, Options.InitVectorBytes);
using var memoryStream = new MemoryStream(cipherTextBytes);
using var cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
var plainTextBytes = new byte[cipherTextBytes.Length];
var totalReadCount = 0;
while (totalReadCount < cipherTextBytes.Length)
{ {
var keyBytes = password.GetBytes(Options.Keysize / 8); var buffer = new byte[cipherTextBytes.Length];
using (var symmetricKey = Aes.Create()) var readCount = cryptoStream.Read(buffer, 0, buffer.Length);
if (readCount == 0)
{ {
symmetricKey.Mode = CipherMode.CBC; break;
using (var decryptor = symmetricKey.CreateDecryptor(keyBytes, Options.InitVectorBytes)) }
{
using (var memoryStream = new MemoryStream(cipherTextBytes))
{
using (var cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read))
{
var plainTextBytes = new byte[cipherTextBytes.Length];
var totalReadCount = 0;
while (totalReadCount < cipherTextBytes.Length)
{
var buffer = new byte[cipherTextBytes.Length];
var readCount = cryptoStream.Read(buffer, 0, buffer.Length);
if (readCount == 0)
{
break;
}
for (var i = 0; i < readCount; i++)
{
plainTextBytes[i + totalReadCount] = buffer[i];
}
totalReadCount += readCount;
}
return Encoding.UTF8.GetString(plainTextBytes, 0, totalReadCount); for (var i = 0; i < readCount; i++)
} {
} plainTextBytes[i + totalReadCount] = buffer[i];
}
} }
totalReadCount += readCount;
} }
return Encoding.UTF8.GetString(plainTextBytes, 0, totalReadCount);
} }
} }

4
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinition.cs

@ -39,8 +39,8 @@ public class TemplateDefinition : IHasNameWithLocalizableDisplayName
/// </summary> /// </summary>
/// <param name="name">Name of the property</param> /// <param name="name">Name of the property</param>
/// <returns> /// <returns>
/// Returns the value in the <see cref="Properties"/> dictionary by given <see cref="name"/>. /// Returns the value in the <see cref="Properties"/> dictionary by given <paramref name="name"/>.
/// Returns null if given <see cref="name"/> is not present in the <see cref="Properties"/> dictionary. /// Returns null if given <paramref name="name"/> is not present in the <see cref="Properties"/> dictionary.
/// </returns> /// </returns>
public object? this[string name] { public object? this[string name] {
get => Properties.GetOrDefault(name); get => Properties.GetOrDefault(name);

4
framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/EmptyProjectFileSystem.cs

@ -12,11 +12,13 @@ internal class EmptyProjectFileSystem : RazorProjectFileSystem
public override IEnumerable<RazorProjectItem> EnumerateItems(string basePath) public override IEnumerable<RazorProjectItem> EnumerateItems(string basePath)
{ {
NormalizeAndEnsureValidPath(basePath); NormalizeAndEnsureValidPath(basePath);
return Enumerable.Empty<RazorProjectItem>(); return [];
} }
[Obsolete("Use GetItem(string path, string fileKind) instead.")] [Obsolete("Use GetItem(string path, string fileKind) instead.")]
#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member
public override RazorProjectItem GetItem(string path) public override RazorProjectItem GetItem(string path)
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
{ {
return GetItem(path, fileKind: null); return GetItem(path, fileKind: null);
} }

2
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs

@ -125,7 +125,7 @@ public class ApplicationMenuItem : IHasMenuItems, IHasSimpleStateCheckers<Applic
GroupName = groupName; GroupName = groupName;
RequiredPermissionName = requiredPermissionName; RequiredPermissionName = requiredPermissionName;
StateCheckers = new List<ISimpleStateChecker<ApplicationMenuItem>>(); StateCheckers = new List<ISimpleStateChecker<ApplicationMenuItem>>();
Items = new ApplicationMenuItemList(); Items = new ApplicationMenuItemList();
} }
/// <summary> /// <summary>

3
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController.cs

@ -1,6 +1,7 @@
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Shouldly; using Shouldly;
using Volo.Abp.Content; using Volo.Abp.Content;
@ -27,7 +28,7 @@ public class RemoteStreamContentTestController : AbpController
var memoryStream = new MemoryStream(); var memoryStream = new MemoryStream();
await memoryStream.WriteAsync(Encoding.UTF8.GetBytes("DownloadAsync")); await memoryStream.WriteAsync(Encoding.UTF8.GetBytes("DownloadAsync"));
memoryStream.Position = 0; memoryStream.Position = 0;
Response.Headers.Add("Content-Disposition", "attachment; filename=myDownload.rtf"); Response.Headers.Append("Content-Disposition", "attachment; filename=myDownload.rtf");
return new RemoteStreamContent(memoryStream, "download.rtf", "application/rtf"); return new RemoteStreamContent(memoryStream, "download.rtf", "application/rtf");
} }

2
framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/TestApp/EntityFrameworkCore/TestAppDbContext.cs

@ -14,8 +14,6 @@ namespace Volo.Abp.TestApp.EntityFrameworkCore;
[ReplaceDbContext(typeof(IFourthDbContext))] [ReplaceDbContext(typeof(IFourthDbContext))]
public class TestAppDbContext : AbpDbContext<TestAppDbContext>, IThirdDbContext, IFourthDbContext public class TestAppDbContext : AbpDbContext<TestAppDbContext>, IThirdDbContext, IFourthDbContext
{ {
private DbSet<FourthDbContextDummyEntity> _dummyEntities;
private DbSet<FourthDbContextDummyEntity> _dummyEntities1;
public DbSet<Person> People { get; set; } public DbSet<Person> People { get; set; }
public DbSet<City> Cities { get; set; } public DbSet<City> Cities { get; set; }

2
global.json

@ -1,6 +1,6 @@
{ {
"sdk": { "sdk": {
"version": "9.0.100-rc.1.24452.12", "version": "9.0.100-rc.2.24474.11",
"rollForward": "latestFeature" "rollForward": "latestFeature"
} }
} }

2
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj

@ -82,7 +82,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj

@ -83,11 +83,11 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets> <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
</PackageReference> </PackageReference>

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj

@ -11,8 +11,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj

@ -8,7 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -78,7 +78,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

6
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj

@ -8,7 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -79,11 +79,11 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets> <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
</PackageReference> </PackageReference>

2
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared.csproj

@ -29,7 +29,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

2
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj

@ -74,7 +74,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj

@ -75,11 +75,11 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets> <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
</PackageReference> </PackageReference>

2
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj

@ -77,7 +77,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj

@ -78,11 +78,11 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets> <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
</PackageReference> </PackageReference>

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj

@ -41,7 +41,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" /> <PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" />
</ItemGroup> </ItemGroup>

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj

@ -14,8 +14,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj

@ -18,7 +18,7 @@
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" /> <PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" />
</ItemGroup> </ItemGroup>

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj

@ -14,7 +14,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj

@ -15,8 +15,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj

@ -15,8 +15,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj

@ -15,12 +15,12 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" /> <PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" />
</ItemGroup> </ItemGroup>

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj

@ -15,7 +15,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj

@ -8,7 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.2.24474.3" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.Blazor.Client\MyCompanyName.MyProjectName.Blazor.Client.csproj" /> <ProjectReference Include="..\MyCompanyName.MyProjectName.Blazor.Client\MyCompanyName.MyProjectName.Blazor.Client.csproj" />
</ItemGroup> </ItemGroup>

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj

@ -22,7 +22,7 @@
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="6.0.0.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0.0" /> <PackageReference Include="Serilog.Sinks.Console" Version="6.0.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.1.24431.7" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.2.24473.5" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj

@ -26,7 +26,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
</Project> </Project>

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj

@ -22,7 +22,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </PackageReference>

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj

@ -13,8 +13,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" /> <PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.AspNetCore.Authentication.JwtBearer\Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj" /> <ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.AspNetCore.Authentication.JwtBearer\Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy\Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.csproj" /> <ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy\Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.csproj" />

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj

@ -19,7 +19,7 @@
<PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" /> <PackageReference Include="DistributedLock.Redis" Version="1.0.3.0" />
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

4
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj

@ -22,8 +22,8 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.1.24431.7" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.2.24473.5" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
</Project> </Project>

2
templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj

@ -13,7 +13,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.1.24431.7" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.2.24473.5" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="8.0.0.0" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="8.0.0.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0.0" /> <PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />

2
templates/maui/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj

@ -35,7 +35,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj

@ -13,8 +13,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </PackageReference>

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.Client.csproj

@ -12,8 +12,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Bootstrap5" Version="1.6.1.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj

@ -8,7 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0-rc.2.24474.3" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.Blazor.Host.Client\MyCompanyName.MyProjectName.Blazor.Host.Client.csproj" /> <ProjectReference Include="..\MyCompanyName.MyProjectName.Blazor.Host.Client\MyCompanyName.MyProjectName.Blazor.Host.Client.csproj" />
</ItemGroup> </ItemGroup>

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj

@ -17,7 +17,7 @@
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" /> <PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.6.1.0" />
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

6
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj

@ -14,9 +14,9 @@
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="IdentityModel" Version="7.0.0.0" /> <PackageReference Include="IdentityModel" Version="7.0.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.AspNetCore.Authentication.JwtBearer\Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj" /> <ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.AspNetCore.Authentication.JwtBearer\Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" /> <ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Caching.StackExchangeRedis\Volo.Abp.Caching.StackExchangeRedis.csproj" /> <ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Caching.StackExchangeRedis\Volo.Abp.Caching.StackExchangeRedis.csproj" />

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj

@ -13,7 +13,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0-rc.2.24474.3" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.AspNetCore.Serilog\Volo.Abp.AspNetCore.Serilog.csproj" /> <ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.AspNetCore.Serilog\Volo.Abp.AspNetCore.Serilog.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" /> <ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Caching.StackExchangeRedis\Volo.Abp.Caching.StackExchangeRedis.csproj" /> <ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.Caching.StackExchangeRedis\Volo.Abp.Caching.StackExchangeRedis.csproj" />

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj

@ -13,7 +13,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" /> <PackageReference Include="Serilog.AspNetCore" Version="8.0.2.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.1.24451.1"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0-rc.2.24474.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </PackageReference>

2
templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj

@ -15,7 +15,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

2
templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj

@ -22,7 +22,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.1.24452.1" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0-rc.2.24474.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

2
templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj

@ -10,7 +10,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.0-rc.1.24451.1" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.0-rc.2.24474.1" />
<ProjectReference Include="..\..\src\MyCompanyName.MyProjectName.EntityFrameworkCore\MyCompanyName.MyProjectName.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\src\MyCompanyName.MyProjectName.EntityFrameworkCore\MyCompanyName.MyProjectName.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.Application.Tests\MyCompanyName.MyProjectName.Application.Tests.csproj" /> <ProjectReference Include="..\MyCompanyName.MyProjectName.Application.Tests\MyCompanyName.MyProjectName.Application.Tests.csproj" />
<ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.EntityFrameworkCore.Sqlite\Volo.Abp.EntityFrameworkCore.Sqlite.csproj" /> <ProjectReference Include="..\..\..\..\..\framework\src\Volo.Abp.EntityFrameworkCore.Sqlite\Volo.Abp.EntityFrameworkCore.Sqlite.csproj" />

2
templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj

@ -23,7 +23,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.1.24431.7" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.2.24473.5" />
</ItemGroup> </ItemGroup>
</Project> </Project>

2
templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj

@ -14,7 +14,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.1.24431.7" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.2.24473.5" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="8.0.0.0" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="8.0.0.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0.0" /> <PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="2.0.0.0" />

Loading…
Cancel
Save