@ -1,190 +1,195 @@ |
|||
<Project> |
|||
<PropertyGroup> |
|||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> |
|||
<CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<PackageVersion Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="4.0.0" /> |
|||
<PackageVersion Include="aliyun-net-sdk-sts" Version="3.1.2" /> |
|||
<PackageVersion Include="aliyun-net-sdk-sts" Version="3.1.3" /> |
|||
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" /> |
|||
<PackageVersion Include="AsyncKeyedLock" Version="7.1.6" /> |
|||
<PackageVersion Include="Autofac" Version="8.2.1" /> |
|||
<PackageVersion Include="Autofac" Version="8.4.0" /> |
|||
<PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="10.0.0" /> |
|||
<PackageVersion Include="Autofac.Extras.DynamicProxy" Version="7.1.0" /> |
|||
<PackageVersion Include="AutoMapper" Version="14.0.0" /> |
|||
<PackageVersion Include="Asp.Versioning.Mvc" Version="8.1.0" /> |
|||
<PackageVersion Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" /> |
|||
<PackageVersion Include="AWSSDK.S3" Version="4.0.0" /> |
|||
<PackageVersion Include="AWSSDK.SecurityToken" Version="4.0.0" /> |
|||
<PackageVersion Include="AWSSDK.S3" Version="4.0.7.2" /> |
|||
<PackageVersion Include="AWSSDK.SecurityToken" Version="4.0.2.2" /> |
|||
<PackageVersion Include="BunnyCDN.Net.Storage" Version="1.0.4" /> |
|||
<PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.19.0" /> |
|||
<PackageVersion Include="Azure.Storage.Blobs" Version="12.24.0" /> |
|||
<PackageVersion Include="Blazorise" Version="1.8.1" /> |
|||
<PackageVersion Include="Blazorise.Components" Version="1.8.1" /> |
|||
<PackageVersion Include="Blazorise.DataGrid" Version="1.8.1" /> |
|||
<PackageVersion Include="Blazorise.Snackbar" Version="1.8.1" /> |
|||
<PackageVersion Include="Castle.Core" Version="5.1.1" /> |
|||
<PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.20.1" /> |
|||
<PackageVersion Include="Azure.Storage.Blobs" Version="12.25.0" /> |
|||
<PackageVersion Include="Blazorise" Version="1.8.6" /> |
|||
<PackageVersion Include="Blazorise.Components" Version="1.8.6" /> |
|||
<PackageVersion Include="Blazorise.DataGrid" Version="1.8.6" /> |
|||
<PackageVersion Include="Blazorise.Snackbar" Version="1.8.6" /> |
|||
<PackageVersion Include="Castle.Core" Version="5.2.1" /> |
|||
<PackageVersion Include="Castle.Core.AsyncInterceptor" Version="2.1.0" /> |
|||
<PackageVersion Include="CommonMark.NET" Version="0.15.1" /> |
|||
<PackageVersion Include="Confluent.Kafka" Version="2.10.0" /> |
|||
<PackageVersion Include="Confluent.Kafka" Version="2.11.1" /> |
|||
<PackageVersion Include="Dapper" Version="2.1.66" /> |
|||
<PackageVersion Include="Dapr.AspNetCore" Version="1.15.4" /> |
|||
<PackageVersion Include="Dapr.Client" Version="1.15.4" /> |
|||
<PackageVersion Include="MyCSharp.HttpUserAgentParser" Version="3.0.25" /> |
|||
<PackageVersion Include="Devart.Data.Oracle.EFCore" Version="10.4.235.9" /> |
|||
<PackageVersion Include="Dapr.AspNetCore" Version="1.16.0" /> |
|||
<PackageVersion Include="Dapr.Client" Version="1.16.0" /> |
|||
<PackageVersion Include="MyCSharp.HttpUserAgentParser" Version="3.0.28" /> |
|||
<PackageVersion Include="Devart.Data.Oracle.EFCore" Version="10.4.290.9" /> |
|||
<PackageVersion Include="DistributedLock.Core" Version="1.0.8" /> |
|||
<PackageVersion Include="DistributedLock.Redis" Version="1.0.3" /> |
|||
<PackageVersion Include="DistributedLock.Redis" Version="1.1.0" /> |
|||
<PackageVersion Include="DeepL.net" Version="1.15.0" /> |
|||
<PackageVersion Include="itext.bouncy-castle-adapter" Version="9.2.0" /> |
|||
<PackageVersion Include="itext7" Version="9.2.0" /> |
|||
<PackageVersion Include="itext7.pdfhtml" Version="6.2.0" /> |
|||
<PackageVersion Include="itext.bouncy-castle-adapter" Version="9.3.0" /> |
|||
<PackageVersion Include="itext7" Version="9.3.0" /> |
|||
<PackageVersion Include="itext7.pdfhtml" Version="6.2.1" /> |
|||
<PackageVersion Include="MongoSandbox.Core" Version="2.0.0" /> |
|||
<PackageVersion Include="MongoSandbox8.runtime.linux-x64" Version="2.0.0" /> |
|||
<PackageVersion Include="MongoSandbox8.runtime.osx-arm64" Version="2.0.0" /> |
|||
<PackageVersion Include="MongoSandbox8.runtime.win-x64" Version="2.0.0" /> |
|||
<PackageVersion Include="FluentValidation" Version="11.11.0" /> |
|||
<PackageVersion Include="FluentValidation" Version="12.0.0" /> |
|||
<PackageVersion Include="Google.Cloud.Storage.V1" Version="4.13.0" /> |
|||
<PackageVersion Include="Hangfire.AspNetCore" Version="1.8.18" /> |
|||
<PackageVersion Include="Hangfire.SqlServer" Version="1.8.18" /> |
|||
<PackageVersion Include="HtmlSanitizer" Version="9.0.884" /> |
|||
<PackageVersion Include="IdentityModel" Version="7.0.0" /> |
|||
<PackageVersion Include="Hangfire.AspNetCore" Version="1.8.21" /> |
|||
<PackageVersion Include="Hangfire.SqlServer" Version="1.8.21" /> |
|||
<PackageVersion Include="HtmlSanitizer" Version="9.0.886" /> |
|||
<PackageVersion Include="Duende.IdentityModel" Version="7.1.0" /> |
|||
<PackageVersion Include="IdentityServer4" Version="4.1.2" /> |
|||
<PackageVersion Include="IdentityServer4.AspNetIdentity" Version="4.1.2" /> |
|||
<PackageVersion Include="JetBrains.Annotations" Version="2024.3.0" /> |
|||
<PackageVersion Include="JetBrains.Annotations" Version="2025.2.2" /> |
|||
<PackageVersion Include="LdapForNet" Version="2.7.15" /> |
|||
<PackageVersion Include="LibGit2Sharp" Version="0.31.0" /> |
|||
<PackageVersion Include="Magick.NET-Q16-AnyCPU" Version="13.4.0" /> |
|||
<PackageVersion Include="MailKit" Version="4.12.0" /> |
|||
<PackageVersion Include="Markdig.Signed" Version="0.41.1" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebView.Maui" Version="9.0.60" /> |
|||
<PackageVersion Include="Microsoft.Maui.Controls" Version="9.0.60" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.5" /> |
|||
<PackageVersion Include="Magick.NET-Q16-AnyCPU" Version="14.9.1" /> |
|||
<PackageVersion Include="MailKit" Version="4.13.0" /> |
|||
<PackageVersion Include="Markdig.Signed" Version="0.42.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebView.Maui" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Maui.Controls" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Razor.Language" Version="6.0.36" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.WebUtilities" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.WebUtilities" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" /> |
|||
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" /> |
|||
<PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Data.SqlClient" Version="6.0.2" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="9.4.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Composite" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Http" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Localization" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.13.0" /> |
|||
<PackageVersion Include="Microsoft.Data.Sqlite" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Data.SqlClient" Version="6.1.1" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Proxies" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.SemanticKernel" Version="1.67.1" /> |
|||
<PackageVersion Include="Microsoft.SemanticKernel.Abstractions" Version="1.67.1" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="9.9.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Composite" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Localization" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" /> |
|||
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0" /> |
|||
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" /> |
|||
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.12.0" /> |
|||
<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.12.0" /> |
|||
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.12.0" /> |
|||
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.12.0" /> |
|||
<PackageVersion Include="Minio" Version="6.0.4" /> |
|||
<PackageVersion Include="MongoDB.Driver" Version="3.3.0" /> |
|||
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.14.0" /> |
|||
<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.14.0" /> |
|||
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.14.0" /> |
|||
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.14.0" /> |
|||
<PackageVersion Include="Minio" Version="6.0.5" /> |
|||
<PackageVersion Include="MongoDB.Driver" Version="3.5.2" /> |
|||
<PackageVersion Include="NEST" Version="7.17.5" /> |
|||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" /> |
|||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" /> |
|||
<PackageVersion Include="Nito.AsyncEx.Context" Version="5.1.2" /> |
|||
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" /> |
|||
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0" /> |
|||
<PackageVersion Include="NSubstitute" Version="5.3.0" /> |
|||
<PackageVersion Include="NuGet.Versioning" Version="6.13.2" /> |
|||
<PackageVersion Include="NUglify" Version="1.21.15" /> |
|||
<PackageVersion Include="NuGet.Versioning" Version="6.14.0" /> |
|||
<PackageVersion Include="NUglify" Version="1.21.17" /> |
|||
<PackageVersion Include="Nullable" Version="1.3.1" /> |
|||
<PackageVersion Include="Octokit" Version="14.0.0" /> |
|||
<PackageVersion Include="OpenIddict.Abstractions" Version="6.4.0" /> |
|||
<PackageVersion Include="OpenIddict.Core" Version="6.4.0" /> |
|||
<PackageVersion Include="OpenIddict.Server.AspNetCore" Version="6.4.0" /> |
|||
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="6.4.0" /> |
|||
<PackageVersion Include="OpenIddict.Validation.ServerIntegration" Version="6.4.0" /> |
|||
<PackageVersion Include="Oracle.EntityFrameworkCore" Version="9.23.80" /> |
|||
<PackageVersion Include="Polly" Version="8.5.2" /> |
|||
<PackageVersion Include="OpenIddict.Abstractions" Version="7.2.0" /> |
|||
<PackageVersion Include="OpenIddict.Core" Version="7.2.0" /> |
|||
<PackageVersion Include="OpenIddict.Server.AspNetCore" Version="7.2.0" /> |
|||
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="7.2.0" /> |
|||
<PackageVersion Include="OpenIddict.Validation.ServerIntegration" Version="7.2.0" /> |
|||
<PackageVersion Include="Oracle.EntityFrameworkCore" Version="9.23.90" /> |
|||
<PackageVersion Include="Polly" Version="8.6.3" /> |
|||
<PackageVersion Include="Polly.Extensions.Http" Version="3.0.0" /> |
|||
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" /> |
|||
<PackageVersion Include="MySql.EntityFrameworkCore" Version="9.0.6" /> |
|||
<PackageVersion Include="Quartz" Version="3.14.0" /> |
|||
<PackageVersion Include="Quartz.Extensions.DependencyInjection" Version="3.14.0" /> |
|||
<PackageVersion Include="Quartz.Plugins.TimeZoneConverter" Version="3.14.0" /> |
|||
<PackageVersion Include="Quartz.Serialization.Json" Version="3.14.0" /> |
|||
<PackageVersion Include="MySql.EntityFrameworkCore" Version="10.0.0-preview" /> |
|||
<PackageVersion Include="Quartz" Version="3.15.0" /> |
|||
<PackageVersion Include="Quartz.Extensions.DependencyInjection" Version="3.15.0" /> |
|||
<PackageVersion Include="Quartz.Plugins.TimeZoneConverter" Version="3.15.0" /> |
|||
<PackageVersion Include="Quartz.Serialization.Json" Version="3.15.0" /> |
|||
<PackageVersion Include="RabbitMQ.Client" Version="7.1.2" /> |
|||
<PackageVersion Include="Rebus" Version="8.8.0" /> |
|||
<PackageVersion Include="Rebus.ServiceProvider" Version="10.3.0" /> |
|||
<PackageVersion Include="Scriban" Version="6.2.1" /> |
|||
<PackageVersion Include="Serilog" Version="4.2.0" /> |
|||
<PackageVersion Include="Rebus.ServiceProvider" Version="10.5.0" /> |
|||
<PackageVersion Include="Riok.Mapperly" Version="4.3.0" /> |
|||
<PackageVersion Include="Scriban" Version="6.3.0" /> |
|||
<PackageVersion Include="Serilog" Version="4.3.0" /> |
|||
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" /> |
|||
<PackageVersion Include="Serilog.Extensions.Hosting" Version="9.0.0" /> |
|||
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.1" /> |
|||
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.2" /> |
|||
<PackageVersion Include="Serilog.Sinks.Async" Version="2.1.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.File" Version="7.0.0" /> |
|||
<PackageVersion Include="SharpZipLib" Version="1.4.2" /> |
|||
<PackageVersion Include="Shouldly" Version="4.3.0" /> |
|||
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.8" /> |
|||
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.6" /> |
|||
<PackageVersion Include="SkiaSharp" Version="2.88.8" /> |
|||
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.8" /> |
|||
<PackageVersion Include="SkiaSharp.NativeAssets.macOS" Version="2.88.8" /> |
|||
<PackageVersion Include="Slugify.Core" Version="4.0.1" /> |
|||
<PackageVersion Include="Spectre.Console" Version="0.50.0" /> |
|||
<PackageVersion Include="StackExchange.Redis" Version="2.8.31" /> |
|||
<PackageVersion Include="Swashbuckle.AspNetCore" Version="8.1.1" /> |
|||
<PackageVersion Include="System.Collections.Immutable" Version="9.0.5" /> |
|||
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.11" /> |
|||
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.7" /> |
|||
<PackageVersion Include="SkiaSharp" Version="3.119.0" /> |
|||
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="3.119.0" /> |
|||
<PackageVersion Include="SkiaSharp.NativeAssets.macOS" Version="3.119.0" /> |
|||
<PackageVersion Include="Slugify.Core" Version="5.1.1" /> |
|||
<PackageVersion Include="Spectre.Console" Version="0.51.1" /> |
|||
<PackageVersion Include="StackExchange.Redis" Version="2.9.17" /> |
|||
<PackageVersion Include="Swashbuckle.AspNetCore" Version="9.0.4" /> |
|||
<PackageVersion Include="System.Collections.Immutable" Version="10.0.0" /> |
|||
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" /> |
|||
<PackageVersion Include="System.Linq.Async" Version="6.0.1" /> |
|||
<PackageVersion Include="System.Linq.Dynamic.Core" Version="1.6.7" /> |
|||
<PackageVersion Include="System.Linq.Queryable" Version="4.3.0" /> |
|||
<PackageVersion Include="System.Runtime.Loader" Version="4.3.0" /> |
|||
<PackageVersion Include="System.Security.Permissions" Version="9.0.5" /> |
|||
<PackageVersion Include="System.Security.Cryptography.Xml" Version="10.0.0" /> |
|||
<PackageVersion Include="System.Security.Permissions" Version="10.0.0" /> |
|||
<PackageVersion Include="System.Security.Principal.Windows" Version="5.0.0" /> |
|||
<PackageVersion Include="System.Text.Encoding.CodePages" Version="9.0.5" /> |
|||
<PackageVersion Include="System.Text.Encodings.Web" Version="9.0.5" /> |
|||
<PackageVersion Include="System.Text.Json" Version="9.0.5" /> |
|||
<PackageVersion Include="System.Text.Encoding.CodePages" Version="10.0.0" /> |
|||
<PackageVersion Include="System.Text.Encodings.Web" Version="10.0.0" /> |
|||
<PackageVersion Include="System.Text.Json" Version="10.0.0" /> |
|||
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.6.3" /> |
|||
<PackageVersion Include="TencentCloudSDK.Sms" Version="3.0.1231" /> |
|||
<PackageVersion Include="TencentCloudSDK.Sms" Version="3.0.1273" /> |
|||
<PackageVersion Include="TimeZoneConverter" Version="7.0.0" /> |
|||
<PackageVersion Include="Unidecode.NET" Version="2.1.0" /> |
|||
<PackageVersion Include="xunit" Version="2.9.3" /> |
|||
<PackageVersion Include="xunit.extensibility.execution" Version="2.9.3" /> |
|||
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2" /> |
|||
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.4" /> |
|||
<PackageVersion Include="coverlet.collector" Version="6.0.4" /> |
|||
<PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2" /> |
|||
<PackageVersion Include="Fody" Version="6.9.2" /> |
|||
<PackageVersion Include="System.Management" Version="9.0.1"/> |
|||
<PackageVersion Include="Fody" Version="6.9.3" /> |
|||
<PackageVersion Include="System.Management" Version="10.0.0"/> |
|||
</ItemGroup> |
|||
</Project> |
|||
</Project> |
|||
|
|||
@ -1,25 +0,0 @@ |
|||
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00 |
|||
# Visual Studio Version 16 |
|||
VisualStudioVersion = 16.0.29009.5 |
|||
MinimumVisualStudioVersion = 10.0.40219.1 |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AbpIoLocalization", "AbpIoLocalization\AbpIoLocalization.csproj", "{35D94BAB-22DF-47E0-AB4A-99CB6495CF50}" |
|||
EndProject |
|||
Global |
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
|||
Debug|Any CPU = Debug|Any CPU |
|||
Release|Any CPU = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
|||
{35D94BAB-22DF-47E0-AB4A-99CB6495CF50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{35D94BAB-22DF-47E0-AB4A-99CB6495CF50}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{35D94BAB-22DF-47E0-AB4A-99CB6495CF50}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{35D94BAB-22DF-47E0-AB4A-99CB6495CF50}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(SolutionProperties) = preSolution |
|||
HideSolutionNode = FALSE |
|||
EndGlobalSection |
|||
GlobalSection(ExtensibilityGlobals) = postSolution |
|||
SolutionGuid = {2CF52C6D-D914-44A3-8F02-7E7BEA0644C5} |
|||
EndGlobalSection |
|||
EndGlobal |
|||
@ -0,0 +1,3 @@ |
|||
<Solution> |
|||
<Project Path="AbpIoLocalization/AbpIoLocalization.csproj" /> |
|||
</Solution> |
|||
@ -0,0 +1,203 @@ |
|||
# ABP Platform 9.3 RC Has Been Released |
|||
|
|||
We are happy to release [ABP](https://abp.io) version **9.3 RC** (Release Candidate). This blog post introduces the new features and important changes in this new version. |
|||
|
|||
Try this version and provide feedback for a more stable version of ABP v9.3! Thanks to you in advance. |
|||
|
|||
## Get Started with the 9.3 RC |
|||
|
|||
You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli). |
|||
|
|||
By default, ABP Studio uses stable versions to create solutions. Therefore, if you want to create a solution with a preview version, first you need to create a solution and then switch your solution to the preview version from the ABP Studio UI: |
|||
|
|||
 |
|||
|
|||
## Migration Guide |
|||
|
|||
There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v9.2 or earlier: [ABP Version 9.3 Migration Guide](https://abp.io/docs/9.3/release-info/migration-guides/abp-9-3) |
|||
|
|||
## What's New with ABP v9.3? |
|||
|
|||
In this section, I will introduce some major features released in this version. |
|||
Here is a brief list of titles explained in the next sections: |
|||
|
|||
* Cron Expression Support for Background Workers |
|||
* Docs Module: PDF Export |
|||
* Angular UI: Standalone Package Structure |
|||
* Upgraded to Blazorise v1.7.7 |
|||
* Audit Logging Module: Excel Export |
|||
|
|||
### Cron Expression Support for Background Workers |
|||
|
|||
We've enhanced the [Background Workers System](https://abp.io/docs/9.3/framework/infrastructure/background-workers) by adding support for Cron expressions when using [Hangfire](https://abp.io/docs/9.3/framework/infrastructure/background-workers/hangfire) or [Quartz](https://abp.io/docs/9.3/framework/infrastructure/background-workers/quartz) as the background worker manager. This new feature provides more flexibility in scheduling background tasks compared to the simple period-based timing system. |
|||
|
|||
Now you can define complex scheduling patterns using standard Cron expressions. For example, you can schedule a task to run: "Every day at midnight", "Every Monday at 9 AM", or "First day of every month". |
|||
|
|||
Here's how you can use it in your background worker: |
|||
|
|||
```csharp |
|||
public class MyPeriodicBackgroundWorker : AsyncPeriodicBackgroundWorkerBase |
|||
{ |
|||
public MyPeriodicBackgroundWorker( |
|||
AbpAsyncTimer timer, |
|||
IServiceScopeFactory serviceScopeFactory) |
|||
: base(timer, serviceScopeFactory) |
|||
{ |
|||
// You can either use Period for simple intervals |
|||
Timer.Period = 600000; //10 minutes |
|||
|
|||
// 👇 or use CronExpression for more complex scheduling 👇 |
|||
CronExpression = "0 0/10 * * * ?"; //Run every 10 minutes |
|||
} |
|||
|
|||
protected async override Task DoWorkAsync( |
|||
PeriodicBackgroundWorkerContext context) |
|||
{ |
|||
// Your background work... |
|||
} |
|||
} |
|||
``` |
|||
|
|||
The `CronExpression` property takes precedence over the `Period` property when both are set. This feature is available when you use either the [Hangfire](https://abp.io/docs/9.3/framework/infrastructure/background-workers/hangfire) or [Quartz](https://abp.io/docs/9.3/framework/infrastructure/background-workers/quartz) background worker managers. |
|||
|
|||
> See the [Background Workers documentation](https://abp.io/docs/9.3/framework/infrastructure/background-workers) for more information about configuring and using background workers with Cron expressions. |
|||
|
|||
### Docs Module: PDF Export |
|||
|
|||
We're excited to introduce a new feature in the Docs Module that allows users to export documentation as PDF files. This feature makes it easier for users to access documentation offline or share it with team members who might not have immediate access to the online documentation system. |
|||
|
|||
**Administrators can generate PDF files from the back-office side**: |
|||
|
|||
 |
|||
|
|||
and **then a "Download PDF" button appears in the document system** (as shown in the image below - the bottom right of the navigation menu -), allowing users to download the compiled documentation as a PDF file: |
|||
|
|||
 |
|||
|
|||
The feature supports multiple versions of documentation, different language variants, and ensures proper formatting of all content including code blocks and technical documentation. |
|||
|
|||
### Angular UI: Standalone Package Structure |
|||
|
|||
ABP v9.3 introduces support for Angular's standalone components architecture while maintaining **full compatibility with existing module-based applications**. This update aligns with Angular's strategic direction toward standalone components as the recommended approach for building Angular applications. |
|||
|
|||
The key improvements include: |
|||
|
|||
* **Dual-support routing configurations** that work seamlessly with both module-based and standalone approaches |
|||
* **ABP Suite integration** for generating code that supports standalone components |
|||
* **Updated schematics** that provide templates for both development patterns |
|||
|
|||
This enhancement gives developers the flexibility to choose their preferred Angular architecture. Existing module-based applications **continue to work without modifications**, while new projects can leverage the standalone approach for simplified dependency management, reduced boilerplate code, and better lazy-loading capabilities. |
|||
|
|||
> For developers interested in migrating to standalone components or starting new projects, we'll be publishing a comprehensive blog post with detailed guidance and best practices. In the meantime, you can check [#22829](https://github.com/abpframework/abp/pull/22829) for implementation details of the standalone package structure and make the necessary changes to your project. |
|||
|
|||
### Upgraded to Blazorise v1.7.7 |
|||
|
|||
Upgraded the [Blazorise](https://blazorise.com/) library to v1.7.7 for Blazor UI. If you are upgrading your project to v9.3.0, please ensure that all the Blazorise-related packages are using v1.7.7 in your application. Otherwise, you might get errors due to incompatible versions. |
|||
|
|||
> See [#23013](https://github.com/abpframework/abp/pull/23013) for the updated NuGet packages. |
|||
|
|||
### Audit Logging Module: Excel Export |
|||
|
|||
In this version, we've added Excel export capabilities to the [Audit Logging Module](https://abp.io/docs/latest/modules/audit-logging-pro), allowing administrators to export audit logs and entity changes to Excel files for further analysis or reporting purposes. |
|||
|
|||
 |
|||
|
|||
This feature enables users to: |
|||
|
|||
- Export audit logs with filtering options |
|||
- Export entity changes with detailed information |
|||
- Receive email notifications when exports are completed or fail |
|||
- Download exported files via secure links |
|||
|
|||
The export process runs in the background, and once completed, users receive an email with a download link. This approach ensures that even large audit log exports don't block the UI or time out during processing. |
|||
|
|||
You can configure various aspects of this feature using the `AuditLogExcelFileOptions` in your module's configuration: |
|||
|
|||
```csharp |
|||
Configure<AuditLogExcelFileOptions>(options => |
|||
{ |
|||
// How long to keep exported files before cleanup |
|||
options.FileRetentionHours = 48; |
|||
|
|||
// Base URL for download links in notification emails |
|||
options.DownloadBaseUrl = "https://yourdomain.com"; |
|||
|
|||
// Configure the cleanup worker schedule |
|||
options.ExcelFileCleanupOptions.Period = (int)TimeSpan.FromHours(24).TotalMilliseconds; |
|||
|
|||
// Use cron expression for more advanced scheduling (requires Hangfire or Quartz) |
|||
options.ExcelFileCleanupOptions.CronExpression = "0 2 * * *"; // Run at 2 AM daily |
|||
}); |
|||
``` |
|||
|
|||
The module includes pre-configured email templates for notifications about completed or failed exports, ensuring users are always informed about the status of their export requests. |
|||
|
|||
> **Note**: This feature requires a configured BLOB storage provider to store the generated Excel files. See the [BLOB Storing documentation](https://abp.io/docs/9.3/framework/infrastructure/blob-storing) for more information. |
|||
|
|||
For more details about the Audit Logging Module and its Excel export capabilities, please refer to the [official documentation](https://abp.io/docs/9.3/modules/audit-logging-pro). |
|||
|
|||
## Community News |
|||
|
|||
### Announcing ABP Studio 1.0 General Availability 🚀 |
|||
|
|||
 |
|||
|
|||
We are thrilled to announce that ABP Studio has reached version 1.0 and is now generally available! This marks a significant milestone for our integrated development environment designed specifically for ABP developers. The stable release brings several powerful features including: |
|||
|
|||
* Enhanced Solution Runner with health monitoring capabilities |
|||
* Theme style selection during project creation (Basic, LeptonX Lite, and LeptonX Themes) |
|||
* New "Container" application type for better Docker container management |
|||
* Improved handling of multiple DbContexts for migration operations |
|||
|
|||
> For a detailed overview of these features and to learn more about what's coming next, check out our [announcement post](https://abp.io/community/articles/announcing-abp-studio-1-0-general-availability-82yw62bt). |
|||
|
|||
### ABP Community Talks 2025.05: Empower Elsa Workflows with AI in .NET + ABP Framework |
|||
|
|||
In this episode of ABP Community Talks, 2025.05, we are thrilled to host [**Sipke Schoorstra**](https://github.com/sfmskywalker), the creator of the [Elsa Workflows](https://docs.elsaworkflows.io/) library! This month's session is all about **"Empower Elsa Workflows with AI in .NET + ABP Framework"**. |
|||
|
|||
 |
|||
|
|||
Sipke will join us to demonstrate how you can leverage AI within Elsa Workflows using .NET and the ABP Framework. The session will explore practical techniques and showcase how to integrate AI capabilities to enhance and automate your business processes within the Elsa workflow engine. |
|||
|
|||
> 👉 Don't miss this opportunity to learn directly from the creator of Elsa and see real-world examples of building intelligent, automated workflows! You can register from [here](https://kommunity.com/volosoft/events/abp-community-talks-202505empower-elsa-workflows-with-ai-in-netabp-framework-3965dd32). |
|||
|
|||
### ABP Bootcamp: Mastering Infrastructure & Features |
|||
|
|||
We are excited to announce the very first **ABP Bootcamp: Mastering Infrastructure & Features**! This is a live training program designed to give you hands-on, practical experience with ABP's core infrastructure and features. |
|||
|
|||
 |
|||
|
|||
Join the ABP Bootcamp to learn directly from the core team in a focused, hands-on program designed for busy developers. Over four days, you'll gain a deep understanding of ABP's infrastructure, best practices, and practical skills you can immediately apply to your projects. |
|||
|
|||
> **Seats are limited!** Don't miss this opportunity to level up your ABP skills with direct guidance from the experts. |
|||
> |
|||
> 👉 [See full details and reserve your seat!](https://abp.io/bootcamp) |
|||
|
|||
### New ABP Community Articles |
|||
|
|||
There are exciting articles contributed by the ABP community as always. I will highlight some of them here: |
|||
|
|||
* [Prabhjot Singh](https://abp.io/community/members/prabhjot) has published 3 new articles: |
|||
* [Accessing Multiple Remote ABP based Backends Using HttpApi.Client](https://abp.io/community/articles/consume-multi-backends-using-clients-6f4vcggh) |
|||
* [Adopting the new .slnx format to organize applications and services](https://abp.io/community/articles/adopting-the-new-.slnx-format-to-organize-applications-6cm3vl8k) |
|||
* [Replacing Dynamic client proxies with Static client proxies](https://abp.io/community/articles/replacing-dynamic-client-proxies-with-static-client-proxies-g30lf0vx) |
|||
* [Liming Ma](https://github.com/maliming) has published 2 new articles: |
|||
* [Resolving Tenant from Route in ABP Framework](https://abp.io/community/articles/resolving-tenant-from-route-in-abp-framework-ah7oru97) |
|||
* [Integrating .NET AI Chat Template with ABP Framework](https://abp.io/community/articles/integrating-.net-ai-chat-template-with-abp-framework-qavb5p2j) |
|||
* [Engincan Veske](https://engincanveske.substack.com/) has published 2 new articles: |
|||
* [Understanding HttpApi.Client Project & Remote Services in an ABP Based Application](https://abp.io/community/articles/http-api-client-and-remote-services-in-abp-based-application-xkknsp6m) |
|||
* [Using Elsa 3 with the ABP Framework: A Comprehensive Guide](https://abp.io/community/articles/using-elsa-3-workflow-with-abp-framework-usqk8afg) |
|||
* [Enis Necipoğlu](https://github.com/enisn) has published 2 new articles: |
|||
* [White Labeling in ABP Framework](https://abp.io/community/articles/white-labeling-in-abp-framework-5trwmrfm) by [Enis Necipoğlu](https://github.com/enisn) |
|||
* [You do it wrong! Customizing ABP Login Page Correctly](https://abp.io/community/articles/you-do-it-wrong-customizing-abp-login-page-correctly-bna7wzt5) |
|||
* [New in ABP Studio: Docker Container Management](https://abp.io/community/articles/abp-studio-docker-container-management-ex7r27y8) by [Yunus Emre Kalkan](https://github.com/yekalkan) |
|||
* [Solving MongoDB GUID Issues After an ABP Framework Upgrade](https://abp.io/community/articles/solving-mongodb-guid-issues-after-an-abp-framework-upgrade-tv8waw1n) by [Burak Demir](https://abp.io/community/members/burakdemir) |
|||
|
|||
|
|||
Thanks to the ABP Community for all the content they have published. You can also [post your ABP-related (text or video) content](https://abp.io/community/posts/create) to the ABP Community. |
|||
|
|||
## Conclusion |
|||
|
|||
This version comes with some new features and a lot of enhancements to the existing features. You can see the [Road Map](https://abp.io/docs/9.3/release-info/road-map) documentation to learn about the release schedule and planned features for the next releases. Please try ABP v9.3 RC and provide feedback to help us release a more stable version. |
|||
|
|||
Thanks for being a part of this community! |
|||
|
After Width: | Height: | Size: 455 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 300 KiB |
|
After Width: | Height: | Size: 239 KiB |
|
After Width: | Height: | Size: 676 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 180 KiB |
|
After Width: | Height: | Size: 852 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 712 KiB |
|
After Width: | Height: | Size: 709 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 667 KiB |
|
After Width: | Height: | Size: 825 KiB |
|
After Width: | Height: | Size: 714 KiB |
|
After Width: | Height: | Size: 993 KiB |
|
After Width: | Height: | Size: 742 KiB |
|
After Width: | Height: | Size: 620 KiB |
|
After Width: | Height: | Size: 970 KiB |
|
After Width: | Height: | Size: 779 KiB |
|
After Width: | Height: | Size: 518 KiB |
|
After Width: | Height: | Size: 630 KiB |
|
After Width: | Height: | Size: 674 KiB |
|
After Width: | Height: | Size: 228 KiB |
|
After Width: | Height: | Size: 267 KiB |
|
After Width: | Height: | Size: 156 KiB |
|
After Width: | Height: | Size: 230 KiB |
|
After Width: | Height: | Size: 206 KiB |
|
After Width: | Height: | Size: 206 KiB |
|
After Width: | Height: | Size: 241 KiB |
|
After Width: | Height: | Size: 156 KiB |
|
After Width: | Height: | Size: 347 KiB |
|
After Width: | Height: | Size: 210 KiB |
|
After Width: | Height: | Size: 174 KiB |
|
After Width: | Height: | Size: 182 KiB |
|
After Width: | Height: | Size: 925 KiB |
|
After Width: | Height: | Size: 220 KiB |
|
After Width: | Height: | Size: 200 KiB |
|
After Width: | Height: | Size: 163 KiB |
|
After Width: | Height: | Size: 968 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 859 KiB |
|
After Width: | Height: | Size: 604 KiB |
|
After Width: | Height: | Size: 984 KiB |
|
After Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 994 KiB |
|
After Width: | Height: | Size: 983 KiB |
|
After Width: | Height: | Size: 788 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 980 KiB |
|
After Width: | Height: | Size: 269 KiB |
|
After Width: | Height: | Size: 259 KiB |
|
After Width: | Height: | Size: 248 KiB |
|
After Width: | Height: | Size: 259 KiB |
|
After Width: | Height: | Size: 472 KiB |
|
After Width: | Height: | Size: 354 KiB |
|
After Width: | Height: | Size: 217 KiB |
|
After Width: | Height: | Size: 254 KiB |
|
After Width: | Height: | Size: 307 KiB |
|
After Width: | Height: | Size: 307 KiB |
|
After Width: | Height: | Size: 248 KiB |
|
After Width: | Height: | Size: 265 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 355 KiB |
|
After Width: | Height: | Size: 346 KiB |
|
After Width: | Height: | Size: 594 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 516 KiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
@ -0,0 +1,101 @@ |
|||
# WeAreDevelopers 2025: A Speaker’s Impressions |
|||
|
|||
 |
|||
|
|||
After speaking at DotNext Moscow, I had high expectations for WeAreDevelopers 2025—and the event delivered on all fronts. Held in Berlin / Germany, it brought together a truly global crowd of developers, tech leaders, and innovators. As a speaker and software architect , I’m sharing my first-hand highlights, favorite moments, and candid scenes from this 2025’s conference. |
|||
|
|||
## 🗣 My Talk |
|||
|
|||
We have a good experience on multi-tenancy topic in SaaS development. My talk's topic was "Building Multi-Tenant ASP.NET Core Applications: Best Practices and Real-World Solutions". It was on the stage 4, 11 July Friday 10:20 am - 10:50 am and [this my presentation file](https://github.com/ebicoglu/presentations/blob/main/multi-tenancy-wearedevelopers-2025_30mins.pptx). |
|||
|
|||
 |
|||
|
|||
 |
|||
 |
|||
 |
|||
|
|||
|
|||
## 🏛 Huge Venue |
|||
|
|||
 |
|||
*The image is credited to WeAreDevelopers organization* |
|||
|
|||
First of all, I had been in numerous software conferences, I must say that I've never seen such a big software event. The event spanned **500+ sessions across 20+ stages**, including the HR Leaders Summit for **2 full days**. |
|||
|
|||
 |
|||
 |
|||
|
|||
------ |
|||
|
|||
## 🎤 Opening Keynote from GitHub |
|||
|
|||
GitHub CEO Thomas Dohmke initiated the conference on the main stage with a talk on *“Agents for the Sake of Happiness”*. Having introduced Copilot three years ago here, he now launched bold predictions about autonomous AI—a fascinating evolution... He demonstrated GitHub Co-Pilot's AI and created a snake game. Altough it didn't work as he planned, we're developers we know live coding is hard. Actually that's because we shouldn't rely on AI. AI is not deterministic even though we set all those temperature, TopP, TopK parameters to minimum. |
|||
|
|||
> AI is a good but not trustable friend! |
|||
|
|||
 |
|||
|
|||
------ |
|||
|
|||
## 🧭 11 Parallel Stages: Rush |
|||
|
|||
There were 11 stages where 11 different topics were being explained. And the sessions were 30 minutes. Actually that's the downside of this event. Because there were so nice talks that needs to be minimum 40 minutes. But anyway I understand the organization team because there are many smart speakers whose needs to be included in this event. So as a attendee I was on a hurry to pick the next talk even when I was listening to a talk :) |
|||
|
|||
The venue consists of 3 buildings. So if you pick a talk on another building, you have 10 mins to go to toilet or drink something and catch the next session on that far building... |
|||
|
|||
There was HR track with **3 stages and 2 full days** of HR/Talent Acquisition programming, it attracted a notable overlap of developers and HR pros. Themes included AI‑powered recruiting, remote work culture, mental health, diversity & inclusion, and building AI agents |
|||
|
|||
 |
|||
 |
|||
|
|||
|
|||
------ |
|||
|
|||
## 🤖 AI & AI & AI & Others... |
|||
|
|||
I'm one of those AI lovers. I love learning cutting-edge information. And as I see AI is being more trendy everyday. That's why most of the talks were about AI. Everything related to AI. I generaly attended AI related talks because I'm also working on some AI topics in Volosoft at the moment. |
|||
|
|||
|
|||
------ |
|||
|
|||
## 🤝 Expo Floor & Networking |
|||
|
|||
The expo was a developer’s playground—cloud services, open‑source tools, startups, and enterprise platforms. I found new partners and reconnected with peers in a buzzing atmosphere. Everywhere was full of talking's even outside. If you want to get fresh air and drink coffee, you can go out and listen to the outside talks. |
|||
|
|||
 |
|||
 |
|||
|
|||
|
|||
|
|||
Networking wasn't just daytime chatter—hallway meetups and evening socials were unforgettable. |
|||
|
|||
 |
|||
 |
|||
|
|||
------ |
|||
|
|||
## 😂 Candid & Fun Moments |
|||
|
|||
Swag stations, sponsor games, “developer selfies”—these lighter moments kept the vibe upbeat and human. |
|||
|
|||
 |
|||
 |
|||
|
|||
------ |
|||
|
|||
## ✅ Final Thoughts & Looking Ahead |
|||
|
|||
WeAreDevelopers 2025 was an unforgettable three-day ride: **15,000 tech minds**, **500+ sessions**, and a true **bridge between developers and HR** |
|||
I’m leaving with: |
|||
|
|||
- Fresh strategies in GenAI and SaaS growth |
|||
- Stronger HR-tech understanding and crossover potential |
|||
- New professional connections—and fun memories |
|||
|
|||
|
|||
------ |
|||
|
|||
 |
|||
|
|||
|
|||
|
|||
@ -0,0 +1,89 @@ |
|||
# ABP.IO Platform 10.0 Final Has Been Released! |
|||
|
|||
We are glad to announce that [ABP](https://abp.io/) 10.0 stable version has been released today. |
|||
|
|||
## What's New With Version 10.0? |
|||
|
|||
All the new features were explained in detail in the [10.0 RC Announcement Post](https://abp.io/community/announcements/announcing-abp-10-0-release-candidate-86lrnyox), so there is no need to review them again. You can check it out for more details. |
|||
|
|||
## Getting Started with 10.0 |
|||
|
|||
### How to Upgrade an Existing Solution |
|||
|
|||
You can upgrade your existing solutions with either ABP Studio or ABP CLI. In the following sections, both approaches are explained: |
|||
|
|||
### Upgrading via ABP Studio |
|||
|
|||
If you are already using the ABP Studio, you can upgrade it to the latest version. ABP Studio periodically checks for updates in the background, and when a new version of ABP Studio is available, you will be notified through a modal. Then, you can update it by confirming the opened modal. See [the documentation](https://abp.io/docs/latest/studio/installation#upgrading) for more info. |
|||
|
|||
After upgrading the ABP Studio, then you can open your solution in the application, and simply click the **Upgrade ABP Packages** action button to instantly upgrade your solution: |
|||
|
|||
 |
|||
|
|||
### Upgrading via ABP CLI |
|||
|
|||
Alternatively, you can upgrade your existing solution via ABP CLI. First, you need to install the ABP CLI or upgrade it to the latest version. |
|||
|
|||
If you haven't installed it yet, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool install -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
Or to update the existing CLI, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool update -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
After installing/updating the ABP CLI, you can use the [`update` command](https://abp.io/docs/latest/CLI#update) to update all the ABP related NuGet and NPM packages in your solution as follows: |
|||
|
|||
```bash |
|||
abp update |
|||
``` |
|||
|
|||
You can run this command in the root folder of your solution to update all ABP related packages. |
|||
|
|||
## Migration Guides |
|||
|
|||
There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v9.x: [ABP Version 10.0 Migration Guide](https://abp.io/docs/10.0/release-info/migration-guides/abp-10-0) |
|||
|
|||
## Community News |
|||
|
|||
### New ABP Community Articles |
|||
|
|||
As always, exciting articles have been contributed by the ABP community. I will highlight some of them here: |
|||
|
|||
* [Alper Ebiçoğlu](https://abp.io/community/members/alper) |
|||
* [Optimize your .NET app for production Part 1](https://abp.io/community/articles/optimize-your-dotnet-app-for-production-for-any-.net-app-wa24j28e) |
|||
* [Optimize your .NET app for production Part 2](https://abp.io/community/articles/optimize-your-dotnet-app-for-production-for-any-.net-app-2-78xgncpi) |
|||
* [Return Code vs Exceptions: Which One is Better?](https://abp.io/community/articles/return-code-vs-exceptions-which-one-is-better-1rwcu9yi) |
|||
* [Sumeyye Kurtulus](https://abp.io/community/members/sumeyye.kurtulus) |
|||
* [Building Scalable Angular Apps with Reusable UI Components](https://abp.io/community/articles/building-scalable-angular-apps-with-reusable-ui-components-b9npiff3) |
|||
* [Angular Library Linking Made Easy: Paths, Workspaces and Symlinks](https://abp.io/community/articles/angular-library-linking-made-easy-paths-workspaces-and-5z2ate6e) |
|||
* [erdem çaygör](https://abp.io/community/members/erdem.caygor) |
|||
* [Building Dynamic Forms in Angular for Enterprise](https://abp.io/community/articles/building-dynamic-forms-in-angular-for-enterprise-6r3ewpxt) |
|||
* [From Server to Browser: Angular TransferState Explained](https://abp.io/community/articles/from-server-to-browser-angular-transferstate-explained-m99zf8oh) |
|||
* [Mansur Besleney](https://abp.io/community/members/mansur.besleney) |
|||
* [Top 10 Exception Handling Mistakes in .NET](https://abp.io/community/articles/top-10-exception-handling-mistakes-in-net-jhm8wzvg) |
|||
* [Berkan Şaşmaz](https://abp.io/community/members/berkansasmaz) |
|||
* [How to Dynamically Set the Connection String in EF Core](https://abp.io/community/articles/how-to-dynamically-set-the-connection-string-in-ef-core-30k87fpj) |
|||
* [Oğuzhan Ağır](https://abp.io/community/members/oguzhan.agir) |
|||
* [The ASP.NET Core Dependency Injection System](https://abp.io/community/articles/the-asp.net-core-dependency-injection-system-3vbsdhq8) |
|||
* [Selman Koç](https://abp.io/community/members/selmankoc) |
|||
* [5 Things Keep in Mind When Deploying Clustered Environment](https://abp.io/community/articles/5-things-keep-in-mind-when-deploying-clustered-environment-i9byusnv) |
|||
* [Muhammet Ali ÖZKAYA](https://abp.io/community/members/m.aliozkaya) |
|||
* [Repository Pattern in ASP.NET Core](https://abp.io/community/articles/repository-pattern-in-asp.net-core-2dudlg3j) |
|||
* [Armağan Ünlü](https://abp.io/community/members/armagan) |
|||
* [UI/UX Trends That Will Shape 2026](https://abp.io/community/articles/UI-UX-Trends-That-Will-Shape-2026-bx4c2kow) |
|||
* [Salih](https://abp.io/community/members/salih) |
|||
* [What is That Domain Service in DDD for .NET Developers?](https://abp.io/community/articles/what-is-that-domain-service-in-ddd-for-.net-developers-uqnpwjja) |
|||
* [Building an API Key Management System with ABP Framework](https://abp.io/community/articles/building-an-api-key-management-system-with-abp-framework-28gn4efw) |
|||
* [Fahri Gedik](https://abp.io/community/members/fahrigedik) |
|||
* [Signal-Based Forms in Angular](https://abp.io/community/articles/signal-based-forms-in-angular-21-9qentsqs) |
|||
|
|||
Thanks to the ABP Community for all the content they have published. You can also [post your ABP related (text or video) content](https://abp.io/community/posts/create) to the ABP Community. |
|||
|
|||
## About the Next Version |
|||
|
|||
The next feature version will be 10.1. You can follow the [release planning here](https://github.com/abpframework/abp/milestones). Please [submit an issue](https://github.com/abpframework/abp/issues/new) if you have any problems with this version. |
|||
|
After Width: | Height: | Size: 127 KiB |
|
After Width: | Height: | Size: 16 KiB |
@ -0,0 +1,79 @@ |
|||
# ABP.IO Platform 9.3 Final Has Been Released! |
|||
|
|||
We are glad to announce that [ABP](https://abp.io/) 9.3 stable version has been released today. |
|||
|
|||
## What's New With Version 9.3? |
|||
|
|||
All the new features were explained in detail in the [9.3 RC Announcement Post](https://abp.io/community/announcements/announcing-abp-9-3-release-candidate-4dqgiryf), so there is no need to review them again. You can check it out for more details. |
|||
|
|||
## Getting Started with 9.3 |
|||
|
|||
### Creating New Solutions |
|||
|
|||
You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli) to create new solutions. |
|||
|
|||
> **Note**: ABP Studio **v1.2.1** has been released with support for **ABP 9.3**. If you already have ABP Studio installed, update it to v1.2.1 (or later, if available) to create new applications targeting 9.3. ABP Studio checks for updates automatically and will prompt you in-app modal to update to the latest version, or you can download the latest installer from the [Studio](https://abp.io/studio) page. See the [upgrading guide](https://abp.io/docs/latest/studio/installation#upgrading) for details. After updating, the New Solution wizard will create applications with ABP 9.3 by default. You can check the [ABP Studio and ABP Startup Template Version Mappings](https://abp.io/docs/latest/studio/version-mapping) documentation to see the corresponding ABP versions for other versions of Studio. |
|||
|
|||
### How to Upgrade an Existing Solution |
|||
|
|||
You can upgrade your existing solutions with either ABP Studio or ABP CLI. In the following sections, both approaches are explained: |
|||
|
|||
### Upgrading via ABP Studio |
|||
|
|||
If you are already using the ABP Studio, you can upgrade it to the latest version. ABP Studio periodically checks for updates in the background, and when a new version of ABP Studio is available, you will be notified through a modal. Then, you can update it by confirming the opened modal. See [the documentation](https://abp.io/docs/latest/studio/installation#upgrading) for more info. |
|||
|
|||
After upgrading the ABP Studio, then you can open your solution in the application, and simply click the **Upgrade ABP Packages** action button to instantly upgrade your solution: |
|||
|
|||
 |
|||
|
|||
### Upgrading via ABP CLI |
|||
|
|||
Alternatively, you can upgrade your existing solution via ABP CLI. First, you need to install the ABP CLI or upgrade it to the latest version. |
|||
|
|||
If you haven't installed it yet, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool install -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
Or to update the existing CLI, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool update -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
After installing/updating the ABP CLI, you can use the [`update` command](https://abp.io/docs/latest/CLI#update) to update all the ABP related NuGet and NPM packages in your solution as follows: |
|||
|
|||
```bash |
|||
abp update |
|||
``` |
|||
|
|||
You can run this command in the root folder of your solution to update all ABP related packages. |
|||
|
|||
## Migration Guides |
|||
|
|||
There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v9.2: [ABP Version 9.3 Migration Guide](https://abp.io/docs/9.3/release-info/migration-guides/abp-9-3) |
|||
|
|||
## Community News |
|||
|
|||
### New ABP Community Articles |
|||
|
|||
As always, exciting articles have been contributed by the ABP community. I will highlight some of them here: |
|||
|
|||
* [Fahri Gedik](https://abp.io/community/members/fahrigedik) has published 2 new articles: |
|||
* [A Modern Approach to Angular Dependency Injection using inject function](https://abp.io/community/articles/a-modern-approach-to-angular-dependency-injection-using-8np4o1ap) |
|||
* [Angular Application Builder: Transitioning from Webpack to Esbuild](https://abp.io/community/articles/angular-application-builder-transitioning-from-webpack-to-3yzhzfl0) |
|||
* [Benjamin Fadina](https://abp.io/community/members/benjaminsqlserver@gmail.com) has published several videos on various topics such as **Blazor Web Assembly Using ABP.IO**, **CQRS Implementation with MediatR in ABP** and more. You can see all his videos [here](https://abp.io/community/members/benjaminsqlserver@gmail.com). |
|||
* [Mansur Besleney](https://abp.io/community/members/mansur.besleney) has published [How to Build Persistent Background Jobs with ABP Framework and Quartz](https://abp.io/community/articles/how-to-build-persistent-background-jobs-with-abp-framework-n9aloh93) |
|||
* [Halil Ibrahim Kalkan](https://x.com/hibrahimkalkan) has published [Multitenancy with Separate Databases in .NET and ABP](https://abp.io/community/articles/multitenancy-with-separate-databases-in-dotnet-and-abp-51nvl4u9) |
|||
* [Alex Maiereanu](https://abp.io/community/members/alex.maiereanu@3sstudio.com) has published [ABP-Hangfire-AzurePostgreSQL](https://abp.io/community/articles/abphangfireazurepostgresql-s1jnf3yg) |
|||
* [Jack Fistelmann](https://abp.io/community/members/jfistelmann) has published [ABP and maildev](https://abp.io/community/articles/abp-and-maildev-gy13cr1p) |
|||
* [Harsh Gupta](https://abp.io/community/members/harshgupta) has published [How to Add a Module in the ABP.io Application?](https://abp.io/community/articles/how-to-add-a-module-in-the-abp.io-application-sdeajkn6) |
|||
* [Tarık Özdemir](https://abp.io/community/members/mtozdemir) has published [AI-First Architecture for .NET Projects: A Modern Blueprint Inspired by McKinsey](https://abp.io/community/articles/AI-First%20Architecture%20for%20.NET%20Projects%3A%20A%20Modern%20Blueprint-h2wgcoq3) |
|||
* [Liming Ma](https://github.com/maliming) has published [Using Hangfire Dashboard in ABP API Website](https://abp.io/community/articles/using-hangfire-dashboard-in-abp-api-website--r32ox497) |
|||
|
|||
Thanks to the ABP Community for all the content they have published. You can also [post your ABP related (text or video) content](https://abp.io/community/posts/create) to the ABP Community. |
|||
|
|||
## About the Next Version |
|||
|
|||
The next feature version will be 10.0. You can follow the [release planning here](https://github.com/abpframework/abp/milestones). Please [submit an issue](https://github.com/abpframework/abp/issues/new) if you have any problems with this version. |
|||
|
After Width: | Height: | Size: 676 KiB |
|
After Width: | Height: | Size: 34 KiB |
@ -0,0 +1,257 @@ |
|||
# ABP Platform 10.0 RC Has Been Released |
|||
|
|||
We are happy to release [ABP](https://abp.io) version **10.0 RC** (Release Candidate). This blog post introduces the new features and important changes in this new version. |
|||
|
|||
Try this version and provide feedback for a more stable version of ABP v10.0! Thanks to you in advance. |
|||
|
|||
## Get Started with the 10.0 RC |
|||
|
|||
You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli). |
|||
|
|||
By default, ABP Studio uses stable versions to create solutions. Therefore, if you want to create a solution with a preview version, first you need to create a solution and then switch your solution to the preview version from the ABP Studio UI: |
|||
|
|||
 |
|||
|
|||
## Migration Guide |
|||
|
|||
There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v9.3 or earlier: [ABP Version 10.0 Migration Guide](https://abp.io/docs/10.0/release-info/migration-guides/abp-10-0). |
|||
|
|||
## What's New with ABP v10.0? |
|||
|
|||
In this section, I will introduce some major features released in this version. |
|||
Here is a brief list of titles explained in the next sections: |
|||
|
|||
* Upgraded to .NET 10.0 |
|||
* Upgraded to Blazorise 1.8.2 |
|||
* New Module: **Workflow (Elsa)** |
|||
* New Object Mapper: **Mapperly** |
|||
* Localization: Nested object support in JSON files |
|||
* Support EF Core Shared Entity Types on Repositories |
|||
* Add failure retry policy to InboxProcessor |
|||
* Migrate to New Esbuild-based Angular Builder |
|||
* Angular SSR support |
|||
|
|||
### Upgraded to .NET 10.0 |
|||
|
|||
We've upgraded ABP to .NET 10.0, so you need to move your solutions to .NET 10.0 if you want to use ABP 10.0. |
|||
|
|||
> Since the stable version of .NET 10 hasn't been released yet, we upgraded ABP to .NET v10.0-rc.1. Stable NET 10 is scheduled to launch as a **Long-Term Support (LTS)** release during .NET Conf 2025, which takes place November 11-13, 2025. We'll update the ABP Platform to the .NET 10 as soon as possible official .NET 10 release is completed. |
|||
|
|||
### Upgraded to Blazorise v1.8.2 |
|||
|
|||
Upgraded the [Blazorise](https://blazorise.com/) library to v1.8.2 for Blazor UI. If you are upgrading your project to v10.0 RC, please ensure that all the Blazorise-related packages are using v1.8.2 in your application. Otherwise, you might get errors due to incompatible versions. |
|||
|
|||
> See [#23717](https://github.com/abpframework/abp/issues/23717) for the updated NuGet packages. |
|||
|
|||
### New Module: **Workflow (Elsa)** |
|||
|
|||
ABP now ships a Workflow module that integrates [Elsa Workflows](https://github.com/elsa-workflows/elsa-core) to build visual, long-running, event-driven workflows in your ABP solutions (monolith or microservices). It provides seamless integration with ABP authentication/authorization, distributed event bus, persistence, background processing and includes support for hybrid UIs via Elsa Studio. |
|||
|
|||
For a hands-on reference showcasing an end-to-end order/payment workflow across services, see the sample: [Elsa Workflows - Sample Workflow Demo](https://abp.io/docs/10.0/samples/elsa-workflows-demo). For capabilities, installation and configuration details (activities, storage, hosting, dashboard), see the module docs: [Workflow (Elsa) module](https://abp.io/docs/10.0/modules/elsa-pro). |
|||
|
|||
 |
|||
|
|||
### New Object Mapper: **Mapperly** |
|||
|
|||
ABP modules now use Mapperly as the default object-to-object mapper. Mapperly is a compile-time, source generator–based mapper that removes runtime reflection and offers better performance with simpler maintenance. For background and implementation details, see the planning issue and the PR: [Switch to another object mapping library](https://github.com/abpframework/abp/issues/23243) and [Use Mapperly to replace AutoMapper in all modules](https://github.com/abpframework/abp/pull/23277). |
|||
|
|||
The `Volo.Abp.AutoMapper` package remains available for backward compatibility. You can keep using AutoMapper in your solutions, but you are responsible for obtaining and managing its license if needed. For upgrade guidance and practical steps, follow the migration guide: [AutoMapper to Mapperly](https://abp.io/docs/10.0/release-info/migration-guides/AutoMapper-To-Mapperly). |
|||
|
|||
### Localization: Nested object support in JSON files |
|||
|
|||
ABP now supports nested objects (and arrays) in JSON localization files, allowing you to organize translations hierarchically and access them using the double underscore (`__`) separator. This improves maintainability for larger resource files and aligns lookups with familiar key paths. |
|||
|
|||
> See the PR for details: [feat(l8n): add support for nested objects in localization files](https://github.com/abpframework/abp/pull/23701). |
|||
|
|||
**Declaration (nested objects)**: |
|||
```json |
|||
{ |
|||
"culture": "en", |
|||
"texts": { |
|||
"MyNestedTranslation": { |
|||
"SomeKey": "Some nested value", |
|||
"SomeOtherKey": "Some other nested value" |
|||
} |
|||
} |
|||
} |
|||
``` |
|||
|
|||
**Usage**: |
|||
```csharp |
|||
L["MyNestedTranslation__SomeKey"]; |
|||
L["MyNestedTranslation__SomeOtherKey"]; |
|||
``` |
|||
|
|||
**Declaration (arrays)**: |
|||
```json |
|||
{ |
|||
"culture": "en", |
|||
"texts": { |
|||
"Menu": { |
|||
"Items": ["Home", "About", "Contact"] |
|||
} |
|||
} |
|||
} |
|||
``` |
|||
|
|||
**Usage**: |
|||
```csharp |
|||
L["Menu__Items__0"]; // Home |
|||
L["Menu__Items__2"]; // Contact |
|||
``` |
|||
|
|||
### Support EF Core Shared Entity Types on Repositories |
|||
|
|||
ABP repositories now support EF Core **shared-type entity** types by allowing a custom entity name to be set on a repository before performing operations. Internally, this uses EF Core's `DbContext.Set<T>(string name)` to target the correct `DbSet`/table for the same CLR type, enabling scenarios like per-tenant tables, archives, or partitioning, and you can switch the target at runtime. See the PR: [Support EF Core Shared Entity Types on Repositories](https://github.com/abpframework/abp/pull/23588) and the EF Core documentation on [shared-type entity types](https://learn.microsoft.com/en-us/ef/core/modeling/entity-types?tabs=data-annotations#shared-type-entity-types). |
|||
|
|||
**Example**: |
|||
```csharp |
|||
// Set the shared entity name so repository operations target that table |
|||
var repo = serviceProvider.GetRequiredService<IRepository<MyEntity, Guid>>(); |
|||
repo.SetCustomEntityName("MyEntity_TenantA"); |
|||
var list = await repo.GetListAsync(); |
|||
|
|||
// Switch to another shared name later on the same instance |
|||
repo.SetCustomEntityName("MyEntity_Archive"); |
|||
await repo.InsertAsync(new MyEntity { /* ... */ }); |
|||
``` |
|||
|
|||
### Add failure retry policy to InboxProcessor |
|||
|
|||
`InboxProcessor` now supports configurable failure handling strategies per event: **Retry** (default; reprocess in the next cycle), **RetryLater** (skip the failing event and retry it later with exponential backoff; the backoff factor and maximum retries are configurable), and **Discard** (drop the failing event). This prevents a single failing handler from blocking subsequent events and improves resiliency. |
|||
|
|||
> **Note**: This is a breaking change because `IncomingEvent` entity properties were updated. See the PR for details: [Add failure retry policy to InboxProcessor](https://github.com/abpframework/abp/pull/23563). |
|||
|
|||
### Migrate to New Esbuild-based Angular Builder |
|||
|
|||
We've migrated ABP Angular templates and packages to Angular's new esbuild-based build system (introduced in Angular 17+ and fully supported in Angular 20) to deliver faster builds, modern ESM support, built-in SSR/prerender capabilities, and a better development experience. This change is non-breaking for existing apps. See the tracking issue and PR: [Angular - Migrate to New Esbuild-based Angular Builder](https://github.com/abpframework/abp/issues/23242), [feat: Update Angular templates to Angular 20 new build system](https://github.com/abpframework/abp/pull/23363). |
|||
|
|||
**Key updates in templates/config**: |
|||
- Builder switched from `@angular-devkit/build-angular:browser` to `@angular-devkit/build-angular:application`. |
|||
- `main` option replaced by `browser`; `polyfills` moved to array form. |
|||
- TypeScript updated to `es2020` with `esModuleInterop: true`; module target `esnext`. |
|||
|
|||
**More Angular updates**: |
|||
- Unit tests have been updated for the new builder and configuration: [#23460](https://github.com/abpframework/abp/pull/23460). |
|||
|
|||
**Warnings**: |
|||
- Constructor injections migrated to Angular's `inject()` function. If you extend a class and previously called `super(...)` with injected params, remove those parameters. See: [Angular inject() migration](https://angular.dev/reference/migrations/inject-function). |
|||
- `provideLogo` and `withEnvironmentOptions` have moved from LeptonX packages to `@abp/ng.theme-shared`. |
|||
- If you use the new application builder and have `tsconfig.json` path mappings that point into `node_modules`, remove those mappings and prefer symlinks instead. See a symlink reference: [Creating symbolic links](https://hostman.com/tutorials/creating-symbolic-links-in-linux/). |
|||
|
|||
### Angular SSR support |
|||
|
|||
ABP Angular templates now support Server-Side Rendering (SSR) with the Angular Application Builder, enabling hybrid rendering (SSR + CSR) for improved first paint, SEO and perceived performance. This includes SSR-safe platform checks (no direct `window`/`location`/`localStorage`), OIDC auth compatibility via cookie-backed storage, and `TransferState` to prevent duplicate HTTP GETs during hydration. For implementation highlights and usage (including how to run the SSR dev server and the `transferStateInterceptor`), see the issue and PR: [Angular SSR](https://github.com/abpframework/abp/issues/23055), [Hybrid Rendering & Application Builder](https://github.com/abpframework/abp/pull/23416). |
|||
|
|||
> See Angular's official guide for details on hybrid rendering (prerender + SSR + CSR): [Angular SSR](https://angular.dev/guide/ssr) and on the builder migration: [Angular build system migration](https://angular.dev/tools/cli/build-system-migration). |
|||
|
|||
|
|||
## Community News |
|||
|
|||
### Recent Events |
|||
|
|||
We recently hosted two sessions of ABP Community Talks: |
|||
|
|||
#### Community Talks 2025.06: Microservices with ABP Template |
|||
|
|||
The Easiest Way to Get Started with Microservices on .NET Using ABP Microservice Solution Template: a deep dive into ABP’s microservice template, showing how ABP Studio streamlines creating, running, and scaling distributed systems. See the event page: [Community Talks: Microservices with ABP Template](https://abp.io/community/events/community-talks/the-easiest-way-to-get-started-with-microservices-on-.net-using-abp-microservice-solution-template-fd2comfn). |
|||
|
|||
<img src="./community-talk-2025-06.png" alt="ABP Community Talks: Microservices with ABP Template" width="360"> |
|||
|
|||
#### Community Talks 2025.07: Developer-Friendly CMS for .NET |
|||
|
|||
Beyond WordPress: A Developer-Friendly CMS for .NET: an overview of building custom web apps with ABP CMS Kit, integrating content management with your application code. Learn more: [Community Talks: Developer-Friendly CMS for .NET](https://abp.io/community/events/community-talks/beyond-wordpress-a-developerfriendly-cms-for-.net-mubtips6). |
|||
|
|||
<img src="./community-talk-2025-07.png" alt="ABP Community Talks: Developer-Friendly CMS for .NET" width="360"> |
|||
|
|||
### Weekly Webinar: Discover ABP Platform |
|||
|
|||
We’ve started a **weekly live webinar series** designed for developers who want to get the most out of the **ABP Platform**. This event is designed for those new to ABP to help you understand its core features, capabilities, and licensing models. |
|||
|
|||
 |
|||
|
|||
Every webinar features live coding demos, practical examples, and an open Q&A segment where you can get your questions answered directly by the ABP team. Whether you’re just starting with ABP or looking to explore advanced scenarios, these sessions will help you build better apps faster. |
|||
|
|||
[👉 Register here to join an upcoming session!](https://abp.io/webinars/discover-abp-platform) |
|||
|
|||
### New ABP Community Articles |
|||
|
|||
There are exciting articles contributed by the ABP community as always. I will highlight some of them here: |
|||
|
|||
- [Alper Ebiçoğlu](https://abp.io/community/members/alper): |
|||
- [High-Performance .NET Libraries You Didn’t Know You Needed](https://abp.io/community/articles/high-performance-net-libraries-you-did-not-know-nu5t88sz) |
|||
- [.NET 10: What You Need to Know (LTS Release, Coming November 2025)](https://abp.io/community/articles/net-10-preview-features-breaking-changes-enhancements-xennnnky) |
|||
- [Best Free Alternatives to AutoMapper in .NET — Why We Moved to Mapperly](https://abp.io/community/articles/best-free-alternatives-to-automapper-in-net-l9f5ii8s) |
|||
- [Liming Ma](https://abp.io/community/members/maliming): |
|||
- [Keep Track of Your Users in an ASP.NET Core Application](https://abp.io/community/articles/keep-track-of-your-users-in-an-asp.net-core-application-jlt1fxvb) |
|||
- [App Services vs Domain Services](https://abp.io/community/articles/app-services-vs-domain-services-4dvau41u) |
|||
- [Using Hangfire Dashboard in ABP API Website](https://abp.io/community/articles/using-hangfire-dashboard-in-abp-api-website--r32ox497) |
|||
- [Fahri Gedik](https://abp.io/community/members/fahrigedik): |
|||
- [Backward‑Compatible REST APIs in .NET Microservices](https://abp.io/community/articles/backward-compatible-rest-apis-dotnet-microservices-9rzlb4q6) |
|||
- [Best Practices for Designing Backward‑Compatible REST APIs in a Microservice Solution for .NET Developers](https://abp.io/community/articles/best-practices-for-designing-backward‑compatible-rest-apis-in-a-microservice-solution-for-.net-developers-t1m4kzfa) |
|||
- [Stepbystep AWS Secrets Manager Integration in ABP](https://abp.io/community/articles/stepbystep-aws-secrets-manager-integration-in-abp-3dcblyix) |
|||
- [Engincan Veske](https://abp.io/community/members/engincanv): |
|||
- [Building a Permission-Based Authorization System for ASP.NET Core](https://abp.io/community/articles/building-a-permission-based-authorization-system-for-asp-net-owyszy0b) |
|||
- [Where and How to Store Your Blob Objects in .NET](https://abp.io/community/articles/where-and-how-to-store-your-blob-objects-in-dotnet-r2r1vjjd) |
|||
- [Salih Özkara](https://abp.io/community/members/salih): |
|||
- [Truly Layering a .NET Application Based on DDD Principles](https://abp.io/community/articles/truly-layering-a-net-application-based-on-ddd-principles-428jhn3a) |
|||
- [Kori Francis](https://abp.io/community/members/kfrancis@clinicalsupportsystems.com): |
|||
- [ABP Postmark Email Integration, Templated Emails](https://abp.io/community/articles/abp-postmark-email-integration-templated-emails-gvgc6pfj) |
|||
- [Universal Redis Configuration in ABP Aspire Deployment](https://abp.io/community/articles/universal-redis-configuration-abp-aspire-deployment-qp90c7u4) |
|||
- [Sajankumar Vijayan](https://abp.io/community/members/connect): |
|||
- [Multi-tenant SaaS apps, Cloudflare DNS](https://abp.io/community/articles/multi-tenant%20SaaS%20apps,%20Cloudflare%20DNs-dar977al) |
|||
- [Selman Koc](https://abp.io/community/members/selmankoc): |
|||
- [Azure DevOps, CI/CD pipelines, Azure DevOps best practices](https://abp.io/community/articles/Azure%20DevOps,%20CI%2FCD%20pipelines,%20Azure%20DevOps%20best%20practices,-wiguy1ew) |
|||
- [Sümeyye Kurtuluş](https://abp.io/community/members/sumeyye.kurtulus): |
|||
- [ABP Now Supports Angular Standalone Applications](https://abp.io/community/articles/abp-now-supports-angular-standalone-applications-zzi2rr2z) |
|||
- [Supercharge your Angular app: A developer's guide to unlock](https://abp.io/community/articles/supercharge-your-angular-app-a-developers-guide-to-unlock-0dmu7tkr) |
|||
- [Mansur Besleney](https://abp.io/community/members/mansur.besleney): |
|||
- [Demystified Aggregates in DDD & .NET: From Theory to Practice](https://abp.io/community/articles/demystified-aggregates-in-ddd-and-dotnet-2becl93q) |
|||
- [How to Build Persistent Background Jobs with ABP Framework and Quartz](https://abp.io/community/articles/how-to-build-persistent-background-jobs-with-abp-framework-n9aloh93) |
|||
- [Angular Application Builder: Transitioning from Webpack to Esbuild](https://abp.io/community/articles/angular-application-builder-transitioning-from-webpack-to-3yzhzfl0) |
|||
- [Muhammet Ali Özkaya](https://abp.io/community/members/m.aliozkaya): |
|||
- [Implementing Unit of Work with ASP.NET Core](https://abp.io/community/articles/implementing-unit-of-work-with-asp.net-core-lv4v2tyf) |
|||
- [Enis Necipoğlu](https://abp.io/community/members/enisn): |
|||
- [Integration Services Explained: What They Are & When to Use](https://abp.io/community/articles/integration-services-explained-what-they-are-when-to-use-lienmsy8) |
|||
- [Berkan Şaşmaz](https://abp.io/community/members/berkansasmaz): |
|||
- [How to Dynamically Set the Connection String in EF Core](https://abp.io/community/articles/how-to-dynamically-set-the-connection-string-in-ef-core-30k87fpj) |
|||
- [Emre Kara](https://abp.io/community/members/emre.kara): |
|||
- [A Developer's Guide to Distributed Event Buses in .NET](https://abp.io/community/articles/a-developers-guide-to-distributed-event-buses-in-.net-oehl23kb) |
|||
- [Oğuzhan Ağır](https://abp.io/community/members/oguzhan.agir): |
|||
- [In-Memory Background Job Queue in ASP.NET Core](https://abp.io/community/articles/in-memory-background-job-queue-aspnet-core-pai2zmtr) |
|||
- [Alperen Samurlu](https://abp.io/community/members/alperen.samurlu): |
|||
- [How Can We Apply the DRY Principle in a Better Way?](https://abp.io/community/articles/how-can-we-apply-the-dry-principle-in-a-better-way-pmc4eao2) |
|||
- [Ahmet Çelik](https://abp.io/community/members/ahmet.celik): |
|||
- [Best Practices Guide for REST API Design](https://abp.io/community/articles/best-practices-guide-for-rest-api-design-oexc1euj) |
|||
- [Elanur Oğuz](https://abp.io/community/members/s.elanuroguz): |
|||
- [Web Design Basics for Graphic Designers Who Don't Code](https://abp.io/community/articles/web-design-basics-for-graphic-designers-who-dont-code-0c2jgt2v) |
|||
- [Seda Şen](https://abp.io/community/members/seda.sen): |
|||
- [Color Psychology in Web Design](https://abp.io/community/articles/color-psychology-in-web-design-z383jph8) |
|||
- [Halime Karayay](https://abp.io/community/members/halimekarayay): |
|||
- [10 Modern HTML CSS Techniques Every Designer Should Know](https://abp.io/community/articles/10-modern-html-css-techniques-every-designer-should-know-zxnwilf4) |
|||
- [Anto Subash](https://abp.io/community/members/antosubash): |
|||
- [ABP React CMS Module: Building Dynamic Pages with Puck](https://abp.io/community/articles/abp-react-cms-module-building-dynamic-pages-with-puck-auxvrwgf) |
|||
- [Yağmur Çelik](https://abp.io/community/members/yagmur.celik): |
|||
- [Integration Testing Best Practices for Building a Robust API](https://abp.io/community/articles/integration-testing-best-practices-for-building-a-robust-udcwef71) |
|||
- [Suhaib Mousa](https://abp.io/community/members/suhaib-mousa): |
|||
- [Visual Studio 2026 - What's New and Why I'm Excited About It](https://abp.io/community/articles/visual-studio-2026-e4s5hed7) |
|||
- [Alex Maiereanu](https://abp.io/community/members/alex.maiereanu@3sstudio.com): |
|||
- [ABP-Hangfire-AzurePostgreSQL](https://abp.io/community/articles/abphangfireazurepostgresql-s1jnf3yg) |
|||
- [Jack Fistelmann](https://abp.io/community/members/jfistelmann): |
|||
- [ABP and maildev](https://abp.io/community/articles/abp-and-maildev-gy13cr1p) |
|||
- Tarık Özdemir: |
|||
- [AI-First Architecture for .NET Projects: A Modern Blueprint](https://abp.io/community/articles/AI-First%20Architecture%20for%20.NET%20Projects%3A%20A%20Modern%20Blueprint-h2wgcoq3) |
|||
- [Prabhjot Singh](https://abp.io/community/members/prabhjot): |
|||
- [Switching from Project References to Package References](https://abp.io/community/articles/switching-from-project-references-to-package-references-ql16qwx0) |
|||
- [Yunus Emre Kalkan](https://abp.io/community/members/yekalkan): |
|||
- [New in ABP Studio: Docker Container Management](https://abp.io/community/articles/abp-studio-docker-container-management-ex7r27y8) |
|||
- [Burak Demir](https://abp.io/community/members/burakdemir): |
|||
- [Solving MongoDB GUID Issues After an ABP Framework Upgrade](https://abp.io/community/articles/solving-mongodb-guid-issues-after-an-abp-framework-upgrade-tv8waw1n) |
|||
|
|||
Thanks to the ABP Community for all the content they have published. You can also [post your ABP-related (text or video) content](https://abp.io/community/posts/create) to the ABP Community. |
|||
|
|||
## Conclusion |
|||
|
|||
This version comes with some new features and a lot of enhancements to the existing features. You can see the [Road Map](https://abp.io/docs/10.0/release-info/road-map) documentation to learn about the release schedule and planned features for the next releases. Please try ABP v10.0 RC and provide feedback to help us release a more stable version. |
|||
|
|||
Thanks for being a part of this community! |
|||
|
After Width: | Height: | Size: 11 KiB |