From 2531fd0c6e8a658015c4ade4281e76de9aaf8129 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 11 May 2022 11:28:16 +0800 Subject: [PATCH 01/51] Enhanced template random SSL port feature. --- .../Templates/App/AppTemplateBase.cs | 7 ++++- .../Templates/Module/ModuleTemplateBase.cs | 4 ++- .../Properties/launchSettings.json | 6 ++--- .../appsettings.json | 6 ++--- .../Properties/launchSettings.json | 6 ++--- .../appsettings.json | 6 ++--- .../Properties/launchSettings.json | 6 ++--- .../appsettings.json | 6 ++--- .../Properties/launchSettings.json | 6 ++--- .../appsettings.json | 6 ++--- .../Properties/launchSettings.json | 6 ++--- .../appsettings.json | 4 +-- .../Properties/launchSettings.json | 6 ++--- .../appsettings.json | 4 +-- .../Properties/launchSettings.json | 6 ++--- .../appsettings.json | 2 +- .../Properties/launchSettings.json | 6 ++--- .../appsettings.json | 6 ++--- .../appsettings.json | 2 +- .../Properties/launchSettings.json | 6 ++--- .../wwwroot/appsettings.json | 2 +- .../Properties/launchSettings.json | 6 ++--- .../appsettings.json | 6 ++--- .../Properties/launchSettings.json | 27 ------------------- 24 files changed, 64 insertions(+), 84 deletions(-) delete mode 100644 templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index 6a0b532135..c8d4b937ad 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -405,7 +405,12 @@ public abstract class AppTemplateBase : TemplateInfo "https://localhost:44301", "https://localhost:44302", "https://localhost:44303", - "https://localhost:44305" + "https://localhost:44304", + "https://localhost:44305", + "https://localhost:44306", + "https://localhost:44307", + "https://localhost:44308", + "https://localhost:44309" } ) ); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Module/ModuleTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Module/ModuleTemplateBase.cs index 712e03f839..5fc263afc3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Module/ModuleTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Module/ModuleTemplateBase.cs @@ -90,7 +90,9 @@ public abstract class ModuleTemplateBase : TemplateInfo "https://localhost:44300", "https://localhost:44301", "https://localhost:44302", - "https://localhost:44303" + "https://localhost:44303", + "https://localhost:44304", + "https://localhost:44305" })); } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Properties/launchSettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Properties/launchSettings.json index b4be64ba09..d9a1c6d901 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Properties/launchSettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44313/", - "sslPort": 44313 + "applicationUrl": "https://localhost:44300/", + "sslPort": 44300 } }, "profiles": { @@ -19,7 +19,7 @@ "commandName": "Project", "dotnetRunMessages": "true", "launchBrowser": true, - "applicationUrl": "https://localhost:44313/", + "applicationUrl": "https://localhost:44300/", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/appsettings.json index f500ef063e..e08d35f224 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/appsettings.json @@ -1,13 +1,13 @@ { "App": { - "SelfUrl": "https://localhost:44313", - "RedirectAllowedUrls": "https://localhost:44313" + "SelfUrl": "https://localhost:44300", + "RedirectAllowedUrls": "https://localhost:44300" }, "ConnectionStrings": { "Default": "mongodb://localhost:27017/MyProjectName", }, "AuthServer": { - "Authority": "https://localhost:44313", + "Authority": "https://localhost:44300", "RequireHttpsMetadata": "false" }, "StringEncryption": { diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Properties/launchSettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Properties/launchSettings.json index b4be64ba09..d9a1c6d901 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Properties/launchSettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44313/", - "sslPort": 44313 + "applicationUrl": "https://localhost:44300/", + "sslPort": 44300 } }, "profiles": { @@ -19,7 +19,7 @@ "commandName": "Project", "dotnetRunMessages": "true", "launchBrowser": true, - "applicationUrl": "https://localhost:44313/", + "applicationUrl": "https://localhost:44300/", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/appsettings.json index fa0901f6cc..cc9e8226f2 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/appsettings.json @@ -1,13 +1,13 @@ { "App": { - "SelfUrl": "https://localhost:44313", - "RedirectAllowedUrls": "https://localhost:44313" + "SelfUrl": "https://localhost:44300", + "RedirectAllowedUrls": "https://localhost:44300" }, "ConnectionStrings": { "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName;Trusted_Connection=True" }, "AuthServer": { - "Authority": "https://localhost:44313", + "Authority": "https://localhost:44300", "RequireHttpsMetadata": "false" }, "StringEncryption": { diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Properties/launchSettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Properties/launchSettings.json index 56107d9223..fc0d2dd450 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Properties/launchSettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44305", - "sslPort": 44305 + "applicationUrl": "https://localhost:44300", + "sslPort": 44300 } }, "profiles": { @@ -18,7 +18,7 @@ "MyCompanyName.MyProjectName": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "https://localhost:44305", + "applicationUrl": "https://localhost:44300", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json index 66ddc446d1..d512dd03b3 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json @@ -1,6 +1,6 @@ { "App": { - "SelfUrl": "https://localhost:44305", + "SelfUrl": "https://localhost:44300", "ClientUrl": "http://localhost:4200", "CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200", "RedirectAllowedUrls": "http://localhost:4200" @@ -12,7 +12,7 @@ "Configuration": "127.0.0.1" }, "AuthServer": { - "Authority": "https://localhost:44305", + "Authority": "https://localhost:44300", "RequireHttpsMetadata": "false", "SwaggerClientId": "MyProjectName_Swagger", "SwaggerClientSecret": "1q2w3e*" @@ -30,7 +30,7 @@ "MyProjectName_Swagger": { "ClientId": "MyProjectName_Swagger", "ClientSecret": "1q2w3e*", - "RootUrl": "https://localhost:44305" + "RootUrl": "https://localhost:44300" } } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Properties/launchSettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Properties/launchSettings.json index 56107d9223..fc0d2dd450 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Properties/launchSettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44305", - "sslPort": 44305 + "applicationUrl": "https://localhost:44300", + "sslPort": 44300 } }, "profiles": { @@ -18,7 +18,7 @@ "MyCompanyName.MyProjectName": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "https://localhost:44305", + "applicationUrl": "https://localhost:44300", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json index f5cf04e16a..7a0f48e4d6 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json @@ -1,6 +1,6 @@ { "App": { - "SelfUrl": "https://localhost:44305", + "SelfUrl": "https://localhost:44300", "ClientUrl": "http://localhost:4200", "CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200", "RedirectAllowedUrls": "http://localhost:4200" @@ -12,7 +12,7 @@ "Configuration": "127.0.0.1" }, "AuthServer": { - "Authority": "https://localhost:44305", + "Authority": "https://localhost:44300", "RequireHttpsMetadata": "false", "SwaggerClientId": "MyProjectName_Swagger", "SwaggerClientSecret": "1q2w3e*" @@ -30,7 +30,7 @@ "MyProjectName_Swagger": { "ClientId": "MyProjectName_Swagger", "ClientSecret": "1q2w3e*", - "RootUrl": "https://localhost:44305" + "RootUrl": "https://localhost:44300" } } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Properties/launchSettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Properties/launchSettings.json index b037eecdfa..e78a5b937c 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Properties/launchSettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44303/", - "sslPort": 44303 + "applicationUrl": "https://localhost:44300/", + "sslPort": 44300 } }, "profiles": { @@ -21,7 +21,7 @@ "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, - "applicationUrl": "https://localhost:44303/" + "applicationUrl": "https://localhost:44300/" } } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/appsettings.json index b8085820a8..97ad461966 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/appsettings.json @@ -1,12 +1,12 @@ { "App": { - "SelfUrl": "https://localhost:44303" + "SelfUrl": "https://localhost:44300" }, "ConnectionStrings": { "Default": "mongodb://localhost:27017/MyProjectName" }, "AuthServer": { - "Authority": "https://localhost:44303", + "Authority": "https://localhost:44300", "RequireHttpsMetadata": "false" }, "StringEncryption": { diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Properties/launchSettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Properties/launchSettings.json index edeefb02ad..b265dfb7fe 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Properties/launchSettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44303/", - "sslPort": 44303 + "applicationUrl": "https://localhost:44300/", + "sslPort": 44300 } }, "profiles": { @@ -21,7 +21,7 @@ "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, - "applicationUrl": "https://localhost:44303/" + "applicationUrl": "https://localhost:44300/" } } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/appsettings.json index cf1965742b..74bc952883 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/appsettings.json @@ -1,12 +1,12 @@ { "App": { - "SelfUrl": "https://localhost:44303" + "SelfUrl": "https://localhost:44300" }, "ConnectionStrings": { "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName;Trusted_Connection=True" }, "AuthServer": { - "Authority": "https://localhost:44303", + "Authority": "https://localhost:44300", "RequireHttpsMetadata": "false" }, "StringEncryption": { diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Properties/launchSettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Properties/launchSettings.json index 509a1a4681..8158750874 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Properties/launchSettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44314/", - "sslPort": 44314 + "applicationUrl": "https://localhost:44309/", + "sslPort": 44309 } }, "profiles": { @@ -19,7 +19,7 @@ "commandName": "Project", "dotnetRunMessages": "true", "launchBrowser": true, - "applicationUrl": "https://localhost:44314/", + "applicationUrl": "https://localhost:44309/", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/appsettings.json index 4f09c3876a..fd546c79f2 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/appsettings.json @@ -1,6 +1,6 @@ { "App": { - "SelfUrl": "https://localhost:44314" + "SelfUrl": "https://localhost:44309" }, "RemoteServices": { "Default": { diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Properties/launchSettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Properties/launchSettings.json index b4be64ba09..77aa2a99bf 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Properties/launchSettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44313/", - "sslPort": 44313 + "applicationUrl": "https://localhost:44308/", + "sslPort": 44308 } }, "profiles": { @@ -19,7 +19,7 @@ "commandName": "Project", "dotnetRunMessages": "true", "launchBrowser": true, - "applicationUrl": "https://localhost:44313/", + "applicationUrl": "https://localhost:44308/", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/appsettings.json index fa0901f6cc..ba3761f8ae 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/appsettings.json @@ -1,13 +1,13 @@ { "App": { - "SelfUrl": "https://localhost:44313", - "RedirectAllowedUrls": "https://localhost:44313" + "SelfUrl": "https://localhost:44308", + "RedirectAllowedUrls": "https://localhost:44308" }, "ConnectionStrings": { "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName;Trusted_Connection=True" }, "AuthServer": { - "Authority": "https://localhost:44313", + "Authority": "https://localhost:44308", "RequireHttpsMetadata": "false" }, "StringEncryption": { diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json index 7bd454bab3..a221ed8d2b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json @@ -21,7 +21,7 @@ "MyProjectName_BlazorServerTiered": { "ClientId": "MyProjectName_BlazorServerTiered", "ClientSecret": "1q2w3e*", - "RootUrl": "https://localhost:44314" + "RootUrl": "https://localhost:44309" }, "MyProjectName_Swagger": { "ClientId": "MyProjectName_Swagger", diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Properties/launchSettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Properties/launchSettings.json index 9ef766441e..341bee1974 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Properties/launchSettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44307", - "sslPort": 44307 + "applicationUrl": "https://localhost:44305", + "sslPort": 44305 } }, "profiles": { @@ -20,7 +20,7 @@ "commandName": "Project", "launchBrowser": true, "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "applicationUrl": "https://localhost:44307", + "applicationUrl": "https://localhost:44305", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/appsettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/appsettings.json index 96ff7b45e9..4d1a881b8b 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/appsettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/appsettings.json @@ -1,6 +1,6 @@ { "App": { - "SelfUrl": "https://localhost:44307" + "SelfUrl": "https://localhost:44305" }, "AuthServer": { "Authority": "https://localhost:44301", diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Properties/launchSettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Properties/launchSettings.json index e31f812c85..aa9b1670fd 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Properties/launchSettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Properties/launchSettings.json @@ -3,8 +3,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "https://localhost:44313/", - "sslPort": 44313 + "applicationUrl": "https://localhost:44304/", + "sslPort": 44304 } }, "profiles": { @@ -19,7 +19,7 @@ "commandName": "Project", "dotnetRunMessages": "true", "launchBrowser": true, - "applicationUrl": "https://localhost:44313/", + "applicationUrl": "https://localhost:44304/", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/appsettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/appsettings.json index afd5f605dc..75f6e96512 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/appsettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/appsettings.json @@ -1,13 +1,13 @@ { "App": { - "SelfUrl": "https://localhost:44313", - "RedirectAllowedUrls": "https://localhost:44313" + "SelfUrl": "https://localhost:44304", + "RedirectAllowedUrls": "https://localhost:44304" }, "ConnectionStrings": { "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName_Unified;Trusted_Connection=True" }, "AuthServer": { - "Authority": "https://localhost:44313", + "Authority": "https://localhost:44304", "RequireHttpsMetadata": "false" } } diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json deleted file mode 100644 index 3196608ce0..0000000000 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:64779/", - "sslPort": 44326 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "MyCompanyName.MyProjectName.Web": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:5001;http://localhost:5000" - } - } -} \ No newline at end of file From 2ad158e27dec3660cba68d130067889abb4e984c Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Mon, 16 May 2022 13:02:33 +0300 Subject: [PATCH 02/51] Add input the byp ass markAsssubmit --- .../core/src/lib/directives/form-submit.directive.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/core/src/lib/directives/form-submit.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/form-submit.directive.ts index 2ca2b9757d..ab8701f7c8 100644 --- a/npm/ng-packs/packages/core/src/lib/directives/form-submit.directive.ts +++ b/npm/ng-packs/packages/core/src/lib/directives/form-submit.directive.ts @@ -26,6 +26,9 @@ export class FormSubmitDirective implements OnInit { @Input() notValidateOnSubmit: string | boolean; + + @Input() + markAsDirtyWhenSubmit: boolean = true @Output() readonly ngSubmit = new EventEmitter(); @@ -40,7 +43,10 @@ export class FormSubmitDirective implements OnInit { ngOnInit() { this.subscription.addOne(this.formGroupDirective.ngSubmit, () => { - this.markAsDirty(); + if(this.markAsDirtyWhenSubmit){ + this.markAsDirty(); + } + this.executedNgSubmit = true; }); From 6dfc275b08a7278e6e7c848dcb9664c244b6113a Mon Sep 17 00:00:00 2001 From: malik masis Date: Mon, 16 May 2022 16:35:56 +0300 Subject: [PATCH 03/51] Added a new article --- .../POST.md | 288 ++++++++++++++++++ .../access_denied.png | Bin 0 -> 16960 bytes .../list.png | Bin 0 -> 47075 bytes .../structure.png | Bin 0 -> 116710 bytes 4 files changed, 288 insertions(+) create mode 100644 docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md create mode 100644 docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/access_denied.png create mode 100644 docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/list.png create mode 100644 docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/structure.png diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md new file mode 100644 index 0000000000..f3926c1490 --- /dev/null +++ b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md @@ -0,0 +1,288 @@ +# Consuming REST APIs from a .NET Client Using ABP's Client Proxy System +In this article, we will show how to consume rest api by using static client proxy by creating a new project and converting that from dynamic client proxy to static client proxy. Also, I will glance at the differences between static and dynamic generic proxies. + +Article flow +* Create a new ABP application with ABP CLI +* Create application service interface +* Implement the application service +* Consume the app service from the console application +* Convert application to use static client proxies +* Add authorization to the application service endpoint +* Grant the permission +* Further reading + +### Create a new ABP application with ABP CLI +Firstly create a new template via ABP CLI. + +````shell +abp new Acme.BookStore -t app +```` + +> If you haven't installed it yet, you should install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI). + +At the same folder build the project with the following command on the cli. +````shell +dotnet build /graphbuild +```` + +It will restore the project and download the NuGet packages. + +Now you should run the DbMigrator project to up your database. + +Now your project is ready you can run it properly. + +![structure-of-the-project](./structure.png) + +From now on, we will add some files to show the case to you. + + +### Create application service interface +You should open your web application then find `Pages` folder and a create new folder named `Books`. +You should create a new razor page and a new js file as named index. + +Change the Pages/Books/Index.cshtml as the following: +```csharp +@page +@using Acme.BookStore.Localization +@using Acme.BookStore.Web.Pages.Books +@using Microsoft.Extensions.Localization +@model IndexModel +@inject IStringLocalizer L +@section scripts +{ + +} + + +

@L["Books"]

+
+ + + +
+``` + +Now change index.js file as the following content +```js +$(function () { + var l = abp.localization.getResource('BookStore'); + $('#BooksTable').DataTable( + abp.libs.datatables.normalizeConfiguration({ + serverSide: true, + paging: true, + order: [[1, "asc"]], + searching: false, + scrollX: true, + ajax: abp.libs.datatables.createAjax(acme.bookStore.books.book.getList), + columnDefs: [ + { + title: l('Name'), + data: "name" + }, + { + title: l('AuthorName'), + data: "authorName" + }, + { + title: l('Price'), + data: "price" + } + ] + }) + ); +}); +``` + +# Implement the application service +Assume that we have an `IBookAppService` interface: + +````csharp +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace Acme.BookStore.Books +{ + public interface IBookAppService : IApplicationService + { + Task> GetListAsync(); + } +} +```` + +That uses a `BookDto` defined as shown: + +```csharp +using System; +using Volo.Abp.Application.Dtos; + +namespace Acme.BookStore.Books +{ + public class BookDto : AuditedEntityDto + { + public string AuthorName { get; set; } + + public string Name { get; set; } + + public DateTime PublishDate { get; set; } + + public float Price { get; set; } + } +} +``` + +```csharp +namespace Acme.BookStore.Books +{ + public class BookAppService : ApplicationService, IBookAppService + { + public Task> GetListAsync(PagedAndSortedResultRequestDto input) + { + var bookDtos = new List() + { + new BookDto(){ Name = "Anna Karenina", AuthorName ="Tolstoy", Price = 50}, + new BookDto(){ Name = "Crime and Punishment", AuthorName ="Dostoevsky", Price = 60}, + new BookDto(){ Name = "Mother", AuthorName ="Gorki", Price = 70} + }; + return Task.FromResult(new PagedResultDto( + bookDtos.Count, + bookDtos + )); + } + } +} +``` +It simply returns a list of books. You probably want to get the books from a database, but it doesn't matter for this article. To do it you can visit [here] (https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF) + +### Consume the app service from the console application +Add a new test class, named BookAppService_Tests in the Application.Tests + +```csharp +using System.Threading.Tasks; +using Xunit; + +namespace Acme.BookStore.Books +{ + public class BookAppService_Tests : BookStoreApplicationTestBase + { + private readonly IBookAppService _bookAppService; + + public BookAppService_Tests() + { + _bookAppService = GetRequiredService(); + } + + [Fact] + public async Task Should_Get_List_Of_Books() + { + var result = await _bookAppService.GetListAsync(); + Assert.Equal(3, result.Count); + } + } +} +``` + +### Convert application to use static client proxies +Before showing you how to use static client proxies instead of dynamic client proxy, I ask for talk differences between both approach. Their similarty, advantages and disadvantages to each other. + +##### Benefits +* Maps C# method calls to remote server HTTP calls by considering the HTTP method, route, query string parameters, request payload and other details. +* Authenticates the HTTP Client by adding access token to the HTTP header. +* Serializes to and deserialize from JSON. +* Handles HTTP API versioning. +* Add correlation id, current tenant id and the current culture to the request. +* Properly handles the error messages sent by the server and throws proper exceptions. + +##### Differences +Static generic proxies provide better performance because it doesn't need to run on runtime, but you should **re-generate** once changing API endpoint definition. Dynamic generic proxies don't need **re-generate** again because working on the runtime can take more a bit of time. + +First, add Volo.Abp.Http.Client NuGet package to your client project: +````shell +Install-Package Volo.Abp.Http.Client +```` +Then add AbpHttpClientModule dependency to your module: +```csharp +[DependsOn( + typeof(AbpHttpClientModule) + //the other dependencies + )] + +public class BookStoreApplicationModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + //Other configurations + + // Prepare for static client proxy generation + context.Services.AddStaticHttpClientProxies( + typeof(BookStoreApplicationContractsModule).Assembly + ); + } +} +``` + +`AddStaticHttpClientProxies` method gets an assembly, finds all service interfaces in the given assembly, and prepares for static client proxy generation. + +> The [application startup template](https://docs.abp.io/en/abp/latest/Startup-Templates/Application) comes pre-configured for the **dynamic** client proxy generation, in the `HttpApi.Client` project. If you want to switch to the **static** client proxies, change `context.Services.AddHttpClientProxies` to `context.Services.AddStaticHttpClientProxies` in the module class of your `HttpApi.Client` project. + +Now you're ready to generate the client proxy code by running the following command in the root folder of your client project when your project is running. + +````bash +abp generate-proxy -t csharp -u http://localhost:44397/ +```` + +Also, you should then run the below command under your web project for the UI side for MVC +````bash +abp generate-proxy -t js -u http://localhost:44397/ +```` + +You have been should the generated files under the runned folder. + +### Add authorization +ABP Framework provides an authorization system based on the ASP.NET Core's authorization infrastructure. +Even so, to use that need to make some configurations. + +Under `Acme.BookStore.Application.Contracts` open `BookStorePermissions` and paste the below code +```csharp +public static class BookStorePermissions +{ + public const string GroupName = "BookStore"; + + public static class Books + { + public const string Default = GroupName + ".Books"; + } + +} +``` +Also need to change `BookStorePermissionDefinitionProvider` under the same folder and project as following. +```csharp +public class BookStorePermissionDefinitionProvider : PermissionDefinitionProvider +{ + public override void Define(IPermissionDefinitionContext context) + { + var bookStoreGroup = context.AddGroup(BookStorePermissions.GroupName, L("Permission:BookStore")); + bookStoreGroup.AddPermission(BookStorePermissions.Books.Default, L("Permission:Books")); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} +``` +And now you should add [Authorize(BookStorePermissions.Books.Default)] to `BookAppService` +If you don't give permission you should see the following screen. +![access denied](./access_denied.png) + +After completing that you can make localization configuration and you should give permission from the Admin UI side. Now you should the following screen. +![list page](./list.png) + +### Further Reading +In this small tutorial, I explained how you can create an example project and apply static client proxy instead of dynamic client proxy. Also summarized the differences between both approaches. + +If you want to get more information, you can read the following documents: + +* [Static C# API Client Proxies](https://docs.abp.io/en/abp/latest/API/Static-CSharp-API-Clients) +* [Dynamic C# API Client Proxies](https://docs.abp.io/en/abp/latest/API/Dynamic-CSharp-API-Clients) +* [Web Application Development Tutorial ](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF) diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/access_denied.png b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/access_denied.png new file mode 100644 index 0000000000000000000000000000000000000000..b0808c8a919fdc928152088ee9d707c2b35a99a8 GIT binary patch literal 16960 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 WsD4mY;{&Y^KucZkNu}D0H~$TO$XUn$ literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/list.png b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/list.png new file mode 100644 index 0000000000000000000000000000000000000000..7b4311acbe0d17f871e1f1a8770e8983bb1e7628 GIT binary patch literal 47075 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Э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

OO{@B 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 I_{!)10Z7Hh{Qv*} literal 0 HcmV?d00001 From ebacc4fe12e81bde5d2247efd2f072e9dd11a61b Mon Sep 17 00:00:00 2001 From: malik masis Date: Mon, 16 May 2022 17:02:33 +0300 Subject: [PATCH 04/51] Updated the doc --- .../POST.md | 47 +++++++++++++------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md index f3926c1490..20c832a85d 100644 --- a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md +++ b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md @@ -1,5 +1,5 @@ # Consuming REST APIs from a .NET Client Using ABP's Client Proxy System -In this article, we will show how to consume rest api by using static client proxy by creating a new project and converting that from dynamic client proxy to static client proxy. Also, I will glance at the differences between static and dynamic generic proxies. +In this article, we will show how to consume Rest API by creating a new project and converting that from the dynamic client proxy to the static client proxy. Also, I will glance at the differences and similarities between static and dynamic generic proxies. Article flow * Create a new ABP application with ABP CLI @@ -20,7 +20,7 @@ abp new Acme.BookStore -t app > If you haven't installed it yet, you should install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI). -At the same folder build the project with the following command on the cli. +In the same folder build the project with the following command on the cli. ````shell dotnet build /graphbuild ```` @@ -35,9 +35,8 @@ Now your project is ready you can run it properly. From now on, we will add some files to show the case to you. - ### Create application service interface -You should open your web application then find `Pages` folder and a create new folder named `Books`. +You should open your web application then find `Pages` folder and create a new folder under it named `Books`. You should create a new razor page and a new js file as named index. Change the Pages/Books/Index.cshtml as the following: @@ -62,7 +61,7 @@ Change the Pages/Books/Index.cshtml as the following: ``` -Now change index.js file as the following content +Now change index.js file as the following content, as weel. ```js $(function () { var l = abp.localization.getResource('BookStore'); @@ -97,15 +96,15 @@ $(function () { Assume that we have an `IBookAppService` interface: ````csharp -using System.Collections.Generic; using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; namespace Acme.BookStore.Books { public interface IBookAppService : IApplicationService { - Task> GetListAsync(); + Task> GetListAsync(PagedAndSortedResultRequestDto input); } } ```` @@ -132,6 +131,13 @@ namespace Acme.BookStore.Books ``` ```csharp +using Acme.BookStore.Permissions; +using Microsoft.AspNetCore.Authorization; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + namespace Acme.BookStore.Books { public class BookAppService : ApplicationService, IBookAppService @@ -158,7 +164,9 @@ It simply returns a list of books. You probably want to get the books from a dat Add a new test class, named BookAppService_Tests in the Application.Tests ```csharp +using Shouldly; using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; using Xunit; namespace Acme.BookStore.Books @@ -175,15 +183,17 @@ namespace Acme.BookStore.Books [Fact] public async Task Should_Get_List_Of_Books() { - var result = await _bookAppService.GetListAsync(); - Assert.Equal(3, result.Count); + var result = await _bookAppService.GetListAsync(new PagedAndSortedResultRequestDto()); + + result.TotalCount.ShouldBeGreaterThan(0); + result.Items.ShouldContain(b => b.Name == "Mother"); } } } ``` ### Convert application to use static client proxies -Before showing you how to use static client proxies instead of dynamic client proxy, I ask for talk differences between both approach. Their similarty, advantages and disadvantages to each other. +Before showing you how to use static client proxies instead of dynamic client proxies, I ask you to talk differences between both approaches. Their similarities, advantages and disadvantages to each other. ##### Benefits * Maps C# method calls to remote server HTTP calls by considering the HTTP method, route, query string parameters, request payload and other details. @@ -194,9 +204,10 @@ Before showing you how to use static client proxies instead of dynamic client pr * Properly handles the error messages sent by the server and throws proper exceptions. ##### Differences -Static generic proxies provide better performance because it doesn't need to run on runtime, but you should **re-generate** once changing API endpoint definition. Dynamic generic proxies don't need **re-generate** again because working on the runtime can take more a bit of time. +Static generic proxies provide better performance because it doesn't need to run on runtime, but you should **re-generate** once changing API endpoint definition. Dynamic generic proxies don't need **re-generate** again because it works on the runtime but it happens more a bit time. -First, add Volo.Abp.Http.Client NuGet package to your client project: +Now focus on how to do it, +Firstly add Volo.Abp.Http.Client NuGet package to your client project: ````shell Install-Package Volo.Abp.Http.Client ```` @@ -236,7 +247,7 @@ Also, you should then run the below command under your web project for the UI si abp generate-proxy -t js -u http://localhost:44397/ ```` -You have been should the generated files under the runned folder. +You should have seen the generated files under the selected folder. ### Add authorization ABP Framework provides an authorization system based on the ASP.NET Core's authorization infrastructure. @@ -244,6 +255,8 @@ Even so, to use that need to make some configurations. Under `Acme.BookStore.Application.Contracts` open `BookStorePermissions` and paste the below code ```csharp +namespace Acme.BookStore.Permissions; + public static class BookStorePermissions { public const string GroupName = "BookStore"; @@ -255,8 +268,12 @@ public static class BookStorePermissions } ``` -Also need to change `BookStorePermissionDefinitionProvider` under the same folder and project as following. +Also need to change `BookStorePermissionDefinitionProvider` under the same folder and project as follows. ```csharp +using Acme.BookStore.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; + public class BookStorePermissionDefinitionProvider : PermissionDefinitionProvider { public override void Define(IPermissionDefinitionContext context) @@ -275,7 +292,7 @@ And now you should add [Authorize(BookStorePermissions.Books.Default)] to `BookA If you don't give permission you should see the following screen. ![access denied](./access_denied.png) -After completing that you can make localization configuration and you should give permission from the Admin UI side. Now you should the following screen. +After completing that you can make the localization configuration and you should give permission at the Admin UI side. Now you should the following screen. ![list page](./list.png) ### Further Reading From a93b7429e2eda4376bafbccd5b969323f5d4ff1b Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Tue, 17 May 2022 11:06:02 +0300 Subject: [PATCH 05/51] Add localizations for abpIo --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 3 ++- .../Commercial/Localization/Resources/en.json | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 1dc0d7c1f7..9569a08657 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -393,6 +393,7 @@ "StartTime": "Start Time", "EndTime": "End Time", "CreateABookDiscount": "Create a book discount", - "BookDiscountDeletionConfirmationMessage": "Are you sure you want to delete this book discount?" + "BookDiscountDeletionConfirmationMessage": "Are you sure you want to delete this book discount?", + "CustomPaymentFlexSwitchDescription": "With license" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index 5a63ea7869..5db648203f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -502,6 +502,7 @@ "ForMoreInformationClickHere": "For more information, click here.", "IsGetOnboardingTraining": "Would you like to get onboarding & web application development training?", "OnboardingWebApplicationDevelopmentTrainingMessage": "To schedule your training calendar, please contact {0} after creating the organization", + "CustomPurchaseMessage": "Click {0} to contact for the next step.", "Note": "Note", "AdditionalNote": "Additional Note", "OnboardingTrainingFaqTitle": "Do you have ABP onboarding training?", From 4ca39530d4fdbf8a7605502f8aed0e5181f74c85 Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 17 May 2022 13:45:33 +0300 Subject: [PATCH 06/51] Updated the doc after feedback --- .../POST.md | 154 ++++++------------ .../access_denied.png | Bin 16960 -> 0 bytes .../list.png | Bin 47075 -> 0 bytes .../static-proxy.png | Bin 0 -> 19010 bytes .../structure.png | Bin 116710 -> 0 bytes 5 files changed, 46 insertions(+), 108 deletions(-) delete mode 100644 docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/access_denied.png delete mode 100644 docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/list.png create mode 100644 docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/static-proxy.png delete mode 100644 docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/structure.png diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md index 20c832a85d..3ed95d0fdc 100644 --- a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md +++ b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md @@ -20,80 +20,14 @@ abp new Acme.BookStore -t app > If you haven't installed it yet, you should install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI). -In the same folder build the project with the following command on the cli. -````shell -dotnet build /graphbuild -```` - -It will restore the project and download the NuGet packages. - -Now you should run the DbMigrator project to up your database. - -Now your project is ready you can run it properly. +After restoring the project will download the NuGet packages. -![structure-of-the-project](./structure.png) +Now you should run the DbMigrator project to up your database and your project is ready for running. From now on, we will add some files to show the case to you. ### Create application service interface -You should open your web application then find `Pages` folder and create a new folder under it named `Books`. -You should create a new razor page and a new js file as named index. - -Change the Pages/Books/Index.cshtml as the following: -```csharp -@page -@using Acme.BookStore.Localization -@using Acme.BookStore.Web.Pages.Books -@using Microsoft.Extensions.Localization -@model IndexModel -@inject IStringLocalizer L -@section scripts -{ - -} - - -

@L["Books"]

- - - - - -``` - -Now change index.js file as the following content, as weel. -```js -$(function () { - var l = abp.localization.getResource('BookStore'); - $('#BooksTable').DataTable( - abp.libs.datatables.normalizeConfiguration({ - serverSide: true, - paging: true, - order: [[1, "asc"]], - searching: false, - scrollX: true, - ajax: abp.libs.datatables.createAjax(acme.bookStore.books.book.getList), - columnDefs: [ - { - title: l('Name'), - data: "name" - }, - { - title: l('AuthorName'), - data: "authorName" - }, - { - title: l('Price'), - data: "price" - } - ] - }) - ); -}); -``` - -# Implement the application service -Assume that we have an `IBookAppService` interface: +Define an interface for the application service. Create an `IBookAppService` interface in the `Books` folder (namespace) of the `Acme.BookStore.Application.Contracts` project: ````csharp using System.Threading.Tasks; @@ -109,7 +43,7 @@ namespace Acme.BookStore.Books } ```` -That uses a `BookDto` defined as shown: +Create a `Books` folder (namespace) in the `Acme.BookStore.Application.Contracts` project and add a `BookDto` class inside it: ```csharp using System; @@ -130,6 +64,9 @@ namespace Acme.BookStore.Books } ``` +# Implement the application service +It is time to implement the `IBookAppService` interface. Create a new class, named `BookAppService` in the `Books` namespace (folder) of the `Acme.BookStore.Application` project: + ```csharp using Acme.BookStore.Permissions; using Microsoft.AspNetCore.Authorization; @@ -161,37 +98,38 @@ namespace Acme.BookStore.Books It simply returns a list of books. You probably want to get the books from a database, but it doesn't matter for this article. To do it you can visit [here] (https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF) ### Consume the app service from the console application -Add a new test class, named BookAppService_Tests in the Application.Tests +Change `ClientDemoService` as shown the following in the `Acme.BookStore.HttpApi.Client.ConsoleTestApp` project under the test folder. ```csharp -using Shouldly; +using Acme.BookStore.Books; +using System; +using System.Linq; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; -using Xunit; +using Volo.Abp.DependencyInjection; -namespace Acme.BookStore.Books -{ - public class BookAppService_Tests : BookStoreApplicationTestBase - { - private readonly IBookAppService _bookAppService; +namespace Acme.BookStore.HttpApi.Client.ConsoleTestApp; - public BookAppService_Tests() - { - _bookAppService = GetRequiredService(); - } +public class ClientDemoService : ITransientDependency +{ + private readonly IBookAppService _bookAppService; - [Fact] - public async Task Should_Get_List_Of_Books() - { - var result = await _bookAppService.GetListAsync(new PagedAndSortedResultRequestDto()); + public ClientDemoService(IBookAppService bookAppService ) + { + _bookAppService = bookAppService; + } - result.TotalCount.ShouldBeGreaterThan(0); - result.Items.ShouldContain(b => b.Name == "Mother"); - } + public async Task RunAsync() + { + var listOfBooks = await _bookAppService.GetListAsync(new PagedAndSortedResultRequestDto()); + Console.WriteLine($"Books: {string.Join(", ", listOfBooks.Items.Select(p => p.Name).ToList())}"); } } ``` +The output should be +> Books: Anna Karenina, Crime and Punishment, Mother + ### Convert application to use static client proxies Before showing you how to use static client proxies instead of dynamic client proxies, I ask you to talk differences between both approaches. Their similarities, advantages and disadvantages to each other. @@ -211,22 +149,21 @@ Firstly add Volo.Abp.Http.Client NuGet package to your client project: ````shell Install-Package Volo.Abp.Http.Client ```` -Then add AbpHttpClientModule dependency to your module: -```csharp -[DependsOn( - typeof(AbpHttpClientModule) - //the other dependencies - )] -public class BookStoreApplicationModule : AbpModule +> The [application startup template](https://docs.abp.io/en/abp/latest/Startup-Templates/Application) comes pre-configured for the **dynamic** client proxy generation, in the `HttpApi.Client` project. If you want to switch to the **static** client proxies, change `context.Services.AddHttpClientProxies` to `context.Services.AddStaticHttpClientProxies` in the module class of your `HttpApi.Client` project. + +```csharp +public class BookStoreHttpApiClientModule : AbpModule { + public const string RemoteServiceName = "Default"; + public override void ConfigureServices(ServiceConfigurationContext context) { //Other configurations - // Prepare for static client proxy generation context.Services.AddStaticHttpClientProxies( - typeof(BookStoreApplicationContractsModule).Assembly + typeof(BookStoreApplicationContractsModule).Assembly, + RemoteServiceName ); } } @@ -234,7 +171,6 @@ public class BookStoreApplicationModule : AbpModule `AddStaticHttpClientProxies` method gets an assembly, finds all service interfaces in the given assembly, and prepares for static client proxy generation. -> The [application startup template](https://docs.abp.io/en/abp/latest/Startup-Templates/Application) comes pre-configured for the **dynamic** client proxy generation, in the `HttpApi.Client` project. If you want to switch to the **static** client proxies, change `context.Services.AddHttpClientProxies` to `context.Services.AddStaticHttpClientProxies` in the module class of your `HttpApi.Client` project. Now you're ready to generate the client proxy code by running the following command in the root folder of your client project when your project is running. @@ -242,12 +178,11 @@ Now you're ready to generate the client proxy code by running the following comm abp generate-proxy -t csharp -u http://localhost:44397/ ```` -Also, you should then run the below command under your web project for the UI side for MVC -````bash -abp generate-proxy -t js -u http://localhost:44397/ -```` - You should have seen the generated files under the selected folder. +![files of the static proxy](./static-proxy.png) + +Now you can run your test console application and you should see the same output. +> Books: Anna Karenina, Crime and Punishment, Mother ### Add authorization ABP Framework provides an authorization system based on the ASP.NET Core's authorization infrastructure. @@ -289,11 +224,14 @@ public class BookStorePermissionDefinitionProvider : PermissionDefinitionProvide } ``` And now you should add [Authorize(BookStorePermissions.Books.Default)] to `BookAppService` -If you don't give permission you should see the following screen. -![access denied](./access_denied.png) +If you don't give permission you should see the following error on the console application. + +> Authorization failed. These requirements were not met: +PermissionRequirement: BookStore.Books +AuthenticationScheme: Identity.Application was forbidden. +Request finished HTTP/1.1 GET https://localhost:44397/api/app/book?SkipCount=0&MaxResultCount=10&api-version=1.0 - - - 403 0 - 156.9766ms -After completing that you can make the localization configuration and you should give permission at the Admin UI side. Now you should the following screen. -![list page](./list.png) +After completing that you can make the localization configuration and you should give permission at the Admin UI side. You can see the same output again and all will be alright. ### Further Reading In this small tutorial, I explained how you can create an example project and apply static client proxy instead of dynamic client proxy. Also summarized the differences between both approaches. diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/access_denied.png b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/access_denied.png deleted file mode 100644 index b0808c8a919fdc928152088ee9d707c2b35a99a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16960 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 WsD4mY;{&Y^KucZkNu}D0H~$TO$XUn$ diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/list.png b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/list.png deleted file mode 100644 index 7b4311acbe0d17f871e1f1a8770e8983bb1e7628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47075 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Э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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/structure.png b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/structure.png deleted file mode 100644 index 328d52cfcfe6a3d1da55eaee155242e876fb40ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116710 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

OO{@B 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 I_{!)10Z7Hh{Qv*} From 9a6d0aa32d61f19dc6ce087d1af7121178817ff7 Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 17 May 2022 14:06:51 +0300 Subject: [PATCH 07/51] fixed typo --- .../2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md index 3ed95d0fdc..d53d70035e 100644 --- a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md +++ b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md @@ -95,7 +95,7 @@ namespace Acme.BookStore.Books } } ``` -It simply returns a list of books. You probably want to get the books from a database, but it doesn't matter for this article. To do it you can visit [here] (https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF) +It simply returns a list of books. You probably want to get the books from a database, but it doesn't matter for this article. To do it you can visit [here](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF) ### Consume the app service from the console application Change `ClientDemoService` as shown the following in the `Acme.BookStore.HttpApi.Client.ConsoleTestApp` project under the test folder. From b8bca527195cbfef91d85cb5ed26293bab4d971f Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 17 May 2022 14:07:18 +0300 Subject: [PATCH 08/51] added a new line to better view --- .../2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md index d53d70035e..dbf62d1628 100644 --- a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md +++ b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md @@ -179,6 +179,7 @@ abp generate-proxy -t csharp -u http://localhost:44397/ ```` You should have seen the generated files under the selected folder. +
![files of the static proxy](./static-proxy.png) Now you can run your test console application and you should see the same output. From 2d322af5c94983eb7628f2e95f9d1b1fd7d89774 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 18 May 2022 16:54:19 +0800 Subject: [PATCH 09/51] Update packages to latest --- Directory.Build.props | 24 ++++++++++++++----- common.props | 2 +- configureawait.props | 2 +- ...AspNetCore.Authentication.JwtBearer.csproj | 2 +- ...etCore.Authentication.OpenIdConnect.csproj | 2 +- .../Volo.Abp.AspNetCore.Components.Web.csproj | 4 ++-- ...p.AspNetCore.Components.WebAssembly.csproj | 4 ++-- .../Volo.Abp.AspNetCore.Components.csproj | 2 +- ...AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.UI.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.csproj | 4 ++-- .../Volo.Abp.AspNetCore.Serilog.csproj | 2 +- .../Volo.Abp.AspNetCore.TestBase.csproj | 2 +- ...Volo.Abp.Authorization.Abstractions.csproj | 2 +- .../Volo.Abp.Autofac/Volo.Abp.Autofac.csproj | 2 +- .../Volo.Abp.AzureServiceBus.csproj | 2 +- .../Volo.Abp.BlobStoring.Aliyun.csproj | 2 +- .../Volo.Abp.BlobStoring.Aws.csproj | 4 ++-- .../Volo.Abp.BlobStoring.Azure.csproj | 2 +- .../Volo.Abp.BlobStoring.FileSystem.csproj | 2 +- .../Volo.Abp.BlobStoring.Minio.csproj | 2 +- ...Volo.Abp.Caching.StackExchangeRedis.csproj | 2 +- .../Volo.Abp.Caching/Volo.Abp.Caching.csproj | 2 +- .../Volo.Abp.Castle.Core.csproj | 4 ++-- .../Volo.Abp.Cli.Core.csproj | 4 ++-- .../src/Volo.Abp.Cli/Volo.Abp.Cli.csproj | 6 ++--- .../src/Volo.Abp.Core/Volo.Abp.Core.csproj | 14 +++++------ .../Volo.Abp.Dapper/Volo.Abp.Dapper.csproj | 2 +- .../Volo.Abp.DistributedLocking.csproj | 2 +- ...p.EntityFrameworkCore.Oracle.Devart.csproj | 2 +- ...o.Abp.EntityFrameworkCore.SqlServer.csproj | 2 +- ...Volo.Abp.EntityFrameworkCore.Sqlite.csproj | 2 +- .../Volo.Abp.EntityFrameworkCore.csproj | 4 ++-- .../Volo.Abp.EventBus.Rebus.csproj | 2 +- .../Volo.Abp.ExceptionHandling.csproj | 2 +- .../Volo.Abp.FluentValidation.csproj | 2 +- .../Volo.Abp.HangFire.csproj | 2 +- ...tp.Client.IdentityModel.WebAssembly.csproj | 2 +- .../src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj | 2 +- .../src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj | 2 +- .../Volo.Abp.MailKit/Volo.Abp.MailKit.csproj | 2 +- .../Volo.Abp.Minify/Volo.Abp.Minify.csproj | 2 +- .../Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj | 2 +- .../Volo.Abp.Quartz/Volo.Abp.Quartz.csproj | 6 ++--- .../Volo.Abp.RabbitMQ.csproj | 2 +- .../Volo.Abp.Sms.Aliyun.csproj | 2 +- .../Volo.Abp.Swashbuckle.csproj | 2 +- .../Volo.Abp.TextTemplating.Razor.csproj | 4 ++-- .../Volo.Abp.TextTemplating.Scriban.csproj | 2 +- .../Volo.Abp.Timing/Volo.Abp.Timing.csproj | 2 +- .../Volo.Abp.VirtualFileSystem.csproj | 2 +- .../SimpleConsoleDemo.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.Tests.csproj | 2 +- .../Volo.Abp.AspNetCore.Serilog.Tests.csproj | 2 +- .../Volo.Abp.BlobStoring.Aliyun.Tests.csproj | 2 +- .../Volo.Abp.Sms.Aliyun.Tests.csproj | 2 +- .../Volo.Abp.VirtualFileSystem.Tests.csproj | 2 +- ...o.Abp.Account.Application.Contracts.csproj | 2 +- .../Volo.Abp.Account.Application.csproj | 2 +- ...Volo.Abp.Account.Web.IdentityServer.csproj | 2 +- .../Volo.Abp.Account.Web.csproj | 2 +- .../Volo.Abp.Account.Application.Tests.csproj | 2 +- .../Volo.Abp.BackgroundJobs.DemoApp.csproj | 2 +- ...roundJobs.EntityFrameworkCore.Tests.csproj | 2 +- ...NetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj | 6 ++--- ...bp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj | 2 +- ....AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj | 2 +- ...Database.Host.ConsoleApp.ConsoleApp.csproj | 6 ++--- ....Database.EntityFrameworkCore.Tests.csproj | 4 ++-- ...BloggingTestApp.EntityFrameworkCore.csproj | 4 ++-- .../Volo.BloggingTestApp.csproj | 2 +- .../Volo.Blogging.Admin.Web.csproj | 2 +- .../Volo.Blogging.Domain.Shared.csproj | 2 +- .../Volo.Blogging.Web.csproj | 2 +- .../Volo.ClientSimulation.Demo.csproj | 2 +- .../Volo.CmsKit.HttpApi.Host.csproj | 10 ++++---- .../Volo.CmsKit.IdentityServer.csproj | 6 ++--- .../Volo.CmsKit.Web.Host.csproj | 6 ++--- .../Volo.CmsKit.Web.Unified.csproj | 4 ++-- .../Volo.CmsKit.Admin.Web.csproj | 2 +- .../Volo.CmsKit.Common.Web.csproj | 2 +- .../Volo.CmsKit.Domain.Shared.csproj | 2 +- .../Volo.CmsKit.Public.Web.csproj | 2 +- .../Volo.CmsKit.Web/Volo.CmsKit.Web.csproj | 2 +- ...lo.CmsKit.EntityFrameworkCore.Tests.csproj | 2 +- .../VoloDocs.EntityFrameworkCore.csproj | 4 ++-- .../docs/app/VoloDocs.Web/VoloDocs.Web.csproj | 2 +- ...lo.Docs.Admin.Application.Contracts.csproj | 2 +- .../Volo.Docs.Admin.Web.csproj | 2 +- .../Volo.Docs.Domain/Volo.Docs.Domain.csproj | 2 +- .../src/Volo.Docs.Web/Volo.Docs.Web.csproj | 2 +- ...Volo.Docs.EntityFrameworkCore.Tests.csproj | 2 +- ...Abp.FeatureManagement.Domain.Shared.csproj | 2 +- .../Volo.Abp.FeatureManagement.Web.csproj | 2 +- ...anagement.EntityFrameworkCore.Tests.csproj | 2 +- .../Volo.Abp.Identity.Domain.Shared.csproj | 2 +- .../Volo.Abp.Identity.Web.csproj | 2 +- .../Volo.Abp.Identity.Domain.Tests.csproj | 2 +- ....Identity.EntityFrameworkCore.Tests.csproj | 2 +- ....PermissionManagement.Domain.Shared.csproj | 2 +- .../Volo.Abp.PermissionManagement.Web.csproj | 2 +- ...p.PermissionManagement.Domain.Tests.csproj | 2 +- ...anagement.EntityFrameworkCore.Tests.csproj | 2 +- .../Volo.Abp.SettingManagement.DemoApp.csproj | 2 +- ...Abp.SettingManagement.Domain.Shared.csproj | 2 +- .../Volo.Abp.SettingManagement.Web.csproj | 2 +- ....Abp.TenantManagement.Domain.Shared.csproj | 2 +- .../Volo.Abp.TenantManagement.Web.csproj | 2 +- ...anagement.EntityFrameworkCore.Tests.csproj | 2 +- ...olo.Abp.VirtualFileExplorer.DemoApp.csproj | 4 ++-- .../Volo.Abp.VirtualFileExplorer.Web.csproj | 2 +- ...e.MyProjectName.Blazor.Server.Mongo.csproj | 4 ++-- ...anyName.MyProjectName.Blazor.Server.csproj | 6 ++--- ...ompanyName.MyProjectName.Host.Mongo.csproj | 6 ++--- .../MyCompanyName.MyProjectName.Host.csproj | 8 +++---- ...CompanyName.MyProjectName.Mvc.Mongo.csproj | 4 ++-- .../MyCompanyName.MyProjectName.Mvc.csproj | 6 ++--- ....MyProjectName.Blazor.Server.Tiered.csproj | 4 ++-- ...anyName.MyProjectName.Blazor.Server.csproj | 2 +- .../MyCompanyName.MyProjectName.Blazor.csproj | 4 ++-- ...ompanyName.MyProjectName.DbMigrator.csproj | 4 ++-- ...anyName.MyProjectName.Domain.Shared.csproj | 2 +- ...e.MyProjectName.EntityFrameworkCore.csproj | 2 +- ...panyName.MyProjectName.HttpApi.Host.csproj | 6 ++--- ...e.MyProjectName.HttpApi.HostWithIds.csproj | 2 +- ...nyName.MyProjectName.IdentityServer.csproj | 4 ++-- ...yCompanyName.MyProjectName.Web.Host.csproj | 4 ++-- .../MyCompanyName.MyProjectName.Web.csproj | 2 +- ...ame.MyProjectName.Application.Tests.csproj | 2 +- ...panyName.MyProjectName.Domain.Tests.csproj | 2 +- ...ojectName.EntityFrameworkCore.Tests.csproj | 2 +- ...tName.HttpApi.Client.ConsoleTestApp.csproj | 4 ++-- ...anyName.MyProjectName.MongoDB.Tests.csproj | 2 +- ...yCompanyName.MyProjectName.TestBase.csproj | 6 ++--- ...CompanyName.MyProjectName.Web.Tests.csproj | 4 ++-- .../MyCompanyName.MyProjectName.csproj | 4 ++-- ...mpanyName.MyProjectName.Blazor.Host.csproj | 4 ++-- ...me.MyProjectName.Blazor.Server.Host.csproj | 4 ++-- ...panyName.MyProjectName.HttpApi.Host.csproj | 10 ++++---- ...nyName.MyProjectName.IdentityServer.csproj | 6 ++--- ...yCompanyName.MyProjectName.Web.Host.csproj | 4 ++-- ...mpanyName.MyProjectName.Web.Unified.csproj | 4 ++-- ...anyName.MyProjectName.Domain.Shared.csproj | 2 +- .../MyCompanyName.MyProjectName.Web.csproj | 2 +- ...ame.MyProjectName.Application.Tests.csproj | 2 +- ...panyName.MyProjectName.Domain.Tests.csproj | 2 +- ...ojectName.EntityFrameworkCore.Tests.csproj | 4 ++-- ...tName.HttpApi.Client.ConsoleTestApp.csproj | 2 +- ...anyName.MyProjectName.MongoDB.Tests.csproj | 2 +- ...yCompanyName.MyProjectName.TestBase.csproj | 6 ++--- .../MyCompanyName.MyProjectName.csproj | 2 +- .../DistDemoApp.EfCoreRabbitMq.csproj | 2 +- 152 files changed, 240 insertions(+), 228 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 568d00f5c3..03538ef037 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,14 +1,20 @@ - + + + 6.0.5 + + + 6.0.5 + 6.0.0 - 16.11.0 + 17.2.0 - 4.2.2 + 4.3.0 4.0.3 @@ -20,20 +26,26 @@ 2.4.1 - 2.4.3 + 2.4.5 3.1.3 - 4.0.1 + 4.2.0 + + + 1.20.0 + + + 7.2.3 true - + all runtime; build; native; contentfiles; analyzers diff --git a/common.props b/common.props index fb595041d7..9b2f3c7913 100644 --- a/common.props +++ b/common.props @@ -13,7 +13,7 @@ $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb - + all runtime; build; native; contentfiles; analyzers diff --git a/configureawait.props b/configureawait.props index b0cf9ef298..92f22f85fb 100644 --- a/configureawait.props +++ b/configureawait.props @@ -1,7 +1,7 @@ - + All runtime; build; native; contentfiles; analyzers diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj index 4f77858462..439bdc2c65 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj b/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj index 6e6b2aa109..d441613119 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj @@ -9,7 +9,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo.Abp.AspNetCore.Components.Web.csproj b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo.Abp.AspNetCore.Components.Web.csproj index c2bff84d6d..f8f4d5702c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo.Abp.AspNetCore.Components.Web.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo.Abp.AspNetCore.Components.Web.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj index deb83d92ab..8825a88626 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj @@ -21,8 +21,8 @@ - - + + diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj b/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj index 628661a184..acd1ff5408 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj @@ -21,7 +21,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj index 27d1a47db9..0fea391a07 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj @@ -26,7 +26,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj index 96dd3f826a..887843eb03 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj index 56cb7b4868..9113c4529e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj @@ -28,8 +28,8 @@ - - + + diff --git a/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj b/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj index eaf531f8b9..7e9e4f01a9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj @@ -23,7 +23,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj index 58c13a6ec5..b3a7a89ad8 100644 --- a/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj +++ b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj @@ -25,7 +25,7 @@ - + diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Volo.Abp.Authorization.Abstractions.csproj b/framework/src/Volo.Abp.Authorization.Abstractions/Volo.Abp.Authorization.Abstractions.csproj index 0eebcdf77a..f0dd3e965e 100644 --- a/framework/src/Volo.Abp.Authorization.Abstractions/Volo.Abp.Authorization.Abstractions.csproj +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Volo.Abp.Authorization.Abstractions.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj index 7a103badfc..7ce82c1c9e 100644 --- a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj +++ b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj @@ -17,7 +17,7 @@ - + diff --git a/framework/src/Volo.Abp.AzureServiceBus/Volo.Abp.AzureServiceBus.csproj b/framework/src/Volo.Abp.AzureServiceBus/Volo.Abp.AzureServiceBus.csproj index 51cab2b9bf..3c4c82a512 100644 --- a/framework/src/Volo.Abp.AzureServiceBus/Volo.Abp.AzureServiceBus.csproj +++ b/framework/src/Volo.Abp.AzureServiceBus/Volo.Abp.AzureServiceBus.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj b/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj index e75ca9f362..c594d29395 100644 --- a/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj +++ b/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.BlobStoring.Aws/Volo.Abp.BlobStoring.Aws.csproj b/framework/src/Volo.Abp.BlobStoring.Aws/Volo.Abp.BlobStoring.Aws.csproj index 94bc8be064..c14651658d 100644 --- a/framework/src/Volo.Abp.BlobStoring.Aws/Volo.Abp.BlobStoring.Aws.csproj +++ b/framework/src/Volo.Abp.BlobStoring.Aws/Volo.Abp.BlobStoring.Aws.csproj @@ -17,8 +17,8 @@ - - + + diff --git a/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj b/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj index c2f1f3e44a..e582c986f4 100644 --- a/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj +++ b/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj @@ -16,7 +16,7 @@ - + diff --git a/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj b/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj index 8f81808a76..ac4025de2a 100644 --- a/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj +++ b/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj @@ -16,7 +16,7 @@ - + diff --git a/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj b/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj index a78b131962..90d58c71f8 100644 --- a/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj +++ b/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo.Abp.Caching.StackExchangeRedis.csproj b/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo.Abp.Caching.StackExchangeRedis.csproj index d1faed8f5c..2e36b1cef0 100644 --- a/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo.Abp.Caching.StackExchangeRedis.csproj +++ b/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo.Abp.Caching.StackExchangeRedis.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj b/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj index 4022d38fee..62aebd1056 100644 --- a/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj +++ b/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj b/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj index 036144e8c6..5b52e2b9e4 100644 --- a/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj +++ b/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj @@ -15,8 +15,8 @@ - - + + diff --git a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj index 460f1c131e..5c83874fa0 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj +++ b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj @@ -16,11 +16,11 @@ - + - + diff --git a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj index de3ed40924..f30216a407 100644 --- a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj +++ b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj @@ -15,10 +15,10 @@ - + - - + + diff --git a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj index b0dd6cd872..4e79126174 100644 --- a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj +++ b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj @@ -15,10 +15,10 @@ - + - - + + @@ -26,10 +26,10 @@ - + - - - + + + diff --git a/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj b/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj index 140379599a..63dfccb23e 100644 --- a/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj +++ b/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj b/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj index 17ad2f02a4..fd9b992133 100644 --- a/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj +++ b/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj index 3bb22e24d8..16c619ffee 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj index 4e7af995e9..cdd059825f 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj index f70f40506f..70cce89a19 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj b/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj index 37632a5c7c..d4b9814879 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj @@ -20,8 +20,8 @@ - - + + diff --git a/framework/src/Volo.Abp.EventBus.Rebus/Volo.Abp.EventBus.Rebus.csproj b/framework/src/Volo.Abp.EventBus.Rebus/Volo.Abp.EventBus.Rebus.csproj index d946e0a256..38f902c578 100644 --- a/framework/src/Volo.Abp.EventBus.Rebus/Volo.Abp.EventBus.Rebus.csproj +++ b/framework/src/Volo.Abp.EventBus.Rebus/Volo.Abp.EventBus.Rebus.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj b/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj index b1d60e60c7..cc55a077c4 100644 --- a/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj b/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj index 9389183d6f..4722fac1b0 100644 --- a/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj +++ b/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj b/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj index 6b598d0edd..387235c911 100644 --- a/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj +++ b/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj b/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj index a30bf9488f..323d877f05 100644 --- a/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj b/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj index 156feea359..762ef89854 100644 --- a/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj +++ b/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj @@ -9,7 +9,7 @@ - + diff --git a/framework/src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj b/framework/src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj index 68651c1c86..dd576e311f 100644 --- a/framework/src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj +++ b/framework/src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj b/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj index acea499215..0665aa9cf2 100644 --- a/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj +++ b/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj b/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj index 3b1b302946..e260f450d6 100644 --- a/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj +++ b/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj index d72f308510..4a9c323e58 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj +++ b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Quartz/Volo.Abp.Quartz.csproj b/framework/src/Volo.Abp.Quartz/Volo.Abp.Quartz.csproj index ce9131fb35..efa11dc9aa 100644 --- a/framework/src/Volo.Abp.Quartz/Volo.Abp.Quartz.csproj +++ b/framework/src/Volo.Abp.Quartz/Volo.Abp.Quartz.csproj @@ -15,9 +15,9 @@ - - - + + + diff --git a/framework/src/Volo.Abp.RabbitMQ/Volo.Abp.RabbitMQ.csproj b/framework/src/Volo.Abp.RabbitMQ/Volo.Abp.RabbitMQ.csproj index 7876bdb0b7..98cc95fecb 100644 --- a/framework/src/Volo.Abp.RabbitMQ/Volo.Abp.RabbitMQ.csproj +++ b/framework/src/Volo.Abp.RabbitMQ/Volo.Abp.RabbitMQ.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Sms.Aliyun/Volo.Abp.Sms.Aliyun.csproj b/framework/src/Volo.Abp.Sms.Aliyun/Volo.Abp.Sms.Aliyun.csproj index 039a21d1e2..763e5d1804 100644 --- a/framework/src/Volo.Abp.Sms.Aliyun/Volo.Abp.Sms.Aliyun.csproj +++ b/framework/src/Volo.Abp.Sms.Aliyun/Volo.Abp.Sms.Aliyun.csproj @@ -18,7 +18,7 @@ - + diff --git a/framework/src/Volo.Abp.Swashbuckle/Volo.Abp.Swashbuckle.csproj b/framework/src/Volo.Abp.Swashbuckle/Volo.Abp.Swashbuckle.csproj index 79970678d3..8be7bbd01b 100644 --- a/framework/src/Volo.Abp.Swashbuckle/Volo.Abp.Swashbuckle.csproj +++ b/framework/src/Volo.Abp.Swashbuckle/Volo.Abp.Swashbuckle.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj b/framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj index 93d47bc4e9..f098ecc80d 100644 --- a/framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj +++ b/framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj b/framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj index bd14d4fd21..a6f7c5eb35 100644 --- a/framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj +++ b/framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj @@ -13,7 +13,7 @@ - + diff --git a/framework/src/Volo.Abp.Timing/Volo.Abp.Timing.csproj b/framework/src/Volo.Abp.Timing/Volo.Abp.Timing.csproj index 26f61b230c..25c6bddc59 100644 --- a/framework/src/Volo.Abp.Timing/Volo.Abp.Timing.csproj +++ b/framework/src/Volo.Abp.Timing/Volo.Abp.Timing.csproj @@ -25,7 +25,7 @@ - + diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj b/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj index 64425620dc..adba125cd3 100644 --- a/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj +++ b/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj @@ -17,7 +17,7 @@ - + diff --git a/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj b/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj index e54432fa00..6762cf2e53 100644 --- a/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj +++ b/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj @@ -18,7 +18,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj index 4e1b5e1334..53a9bd3747 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj @@ -20,7 +20,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj index 700531119b..18f7107cfd 100644 --- a/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj @@ -10,7 +10,7 @@ - + diff --git a/framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj b/framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj index e72638578d..b31678d56b 100644 --- a/framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj +++ b/framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj @@ -12,7 +12,7 @@ - + diff --git a/framework/test/Volo.Abp.Sms.Aliyun.Tests/Volo.Abp.Sms.Aliyun.Tests.csproj b/framework/test/Volo.Abp.Sms.Aliyun.Tests/Volo.Abp.Sms.Aliyun.Tests.csproj index a42ced54a7..df7e4cd390 100644 --- a/framework/test/Volo.Abp.Sms.Aliyun.Tests/Volo.Abp.Sms.Aliyun.Tests.csproj +++ b/framework/test/Volo.Abp.Sms.Aliyun.Tests/Volo.Abp.Sms.Aliyun.Tests.csproj @@ -12,7 +12,7 @@ - + diff --git a/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj b/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj index 1ba3e96e1e..4cb884a7ca 100644 --- a/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj +++ b/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj index d6b87b957d..4b5029d234 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj @@ -21,7 +21,7 @@ - + diff --git a/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj b/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj index 32b27998cc..35f0f2a352 100644 --- a/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj +++ b/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj @@ -25,7 +25,7 @@ - + diff --git a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj index 6a95357f23..c664c3fb8b 100644 --- a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj +++ b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj @@ -38,7 +38,7 @@ - + diff --git a/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj b/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj index c59ec20c40..322291da3e 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj +++ b/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj @@ -44,7 +44,7 @@ - + diff --git a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj index 939dd86b43..c01aaf95cd 100644 --- a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj +++ b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj index 46a09dbbe0..f62357c566 100644 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj +++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj index e464c72af2..8f98fa4c39 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj index fe3a18f578..ee105e4721 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj @@ -21,12 +21,12 @@ - - + + - + diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj index 25ccdc747e..ff2f7ecff9 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj @@ -9,7 +9,7 @@ - + diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj index 490b1f651e..41de32d955 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj b/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj index ef767dab68..de333dc7aa 100644 --- a/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj +++ b/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj @@ -21,12 +21,12 @@ - + - - + + diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj index 905302a06b..a1b9f2730d 100644 --- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj +++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj index 8d47633b28..f1229951df 100644 --- a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj +++ b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj b/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj index 17e68720cb..455a25b131 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj +++ b/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj b/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj index e6a2f6c2fe..0f3c2f52c7 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj +++ b/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj @@ -24,7 +24,7 @@ - + diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj index c56b888d38..96c14f8da0 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj @@ -21,7 +21,7 @@ - + diff --git a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj index ca504b6800..a05cff2692 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj +++ b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj @@ -24,7 +24,7 @@ - + diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/Volo.ClientSimulation.Demo.csproj b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/Volo.ClientSimulation.Demo.csproj index 47cac805fd..3207233860 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/Volo.ClientSimulation.Demo.csproj +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/Volo.ClientSimulation.Demo.csproj @@ -9,7 +9,7 @@ - + diff --git a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj index f72684cfa5..f24a5c17f2 100644 --- a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj @@ -8,13 +8,13 @@ - + - - - - + + + + diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj index 48871c910a..e3f3b0cf3f 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj @@ -8,11 +8,11 @@ - + - - + + diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.csproj b/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.csproj index 4432a79f55..be312facab 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.csproj @@ -8,11 +8,11 @@ - + - - + + diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj index 8f49a165cd..38130dc961 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj @@ -8,9 +8,9 @@ - + - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj index 3b925fc97c..e7068a41a8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj @@ -18,7 +18,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj index 95379d4794..1ca9a78b27 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj @@ -19,7 +19,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.csproj b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.csproj index 107aa14452..22160272fd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.csproj @@ -12,7 +12,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj index 2dc1fd425c..b4aeb556fe 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.csproj index 4eeb97c9f2..a22da28426 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.csproj @@ -19,7 +19,7 @@ - + diff --git a/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.csproj b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.csproj index cea6684727..89319b548f 100644 --- a/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.csproj +++ b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj b/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj index 8c25dd9b31..84dce5e2e4 100644 --- a/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj +++ b/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj b/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj index e77d6a36ed..3a0ed64889 100644 --- a/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj +++ b/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj index e7f372dfc6..781dc024c5 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj @@ -23,7 +23,7 @@ - + diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj index a523cca13c..1c83977e3a 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj +++ b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj @@ -27,7 +27,7 @@ - + diff --git a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj index 29020e50bc..d8548c9bbc 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj +++ b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj @@ -20,7 +20,7 @@ - + diff --git a/modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj b/modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj index 1795b0f9b8..43fb1bb9bb 100644 --- a/modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj +++ b/modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj @@ -23,7 +23,7 @@ - + diff --git a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj index 1c3b5de2a8..2ee496241e 100644 --- a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj +++ b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj index 8b1796e8fb..20e31fe161 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj index 838a472ce3..e5c8b3ba52 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj @@ -28,7 +28,7 @@ - + diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj index e998fe73f8..f028c9b9b6 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj index ddd23ab870..fd461ebe66 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj @@ -27,7 +27,7 @@ - + diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj index d0a9c8da05..e3baeb0892 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj @@ -45,7 +45,7 @@ - + diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj index 35ab51d83e..825c31a2eb 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj b/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj index 63dc588d03..139ccc9262 100644 --- a/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj +++ b/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj @@ -20,7 +20,7 @@ - + diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj index 70c8b26f2d..c44c0b326f 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj @@ -25,7 +25,7 @@ - + diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj index 05dffc66ec..bf11efd61d 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj @@ -35,7 +35,7 @@ - + diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo.Abp.PermissionManagement.Domain.Tests.csproj b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo.Abp.PermissionManagement.Domain.Tests.csproj index a59678dfe1..9b0cd2f1c0 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo.Abp.PermissionManagement.Domain.Tests.csproj +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo.Abp.PermissionManagement.Domain.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj index dcc9751ff0..034ee303da 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj index 00aa0eb2da..8d5de742c4 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj @@ -12,7 +12,7 @@ - + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj index 38991408d5..f6c3e0a102 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj @@ -21,7 +21,7 @@ - + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj index b802865379..7b77c68f22 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj @@ -23,7 +23,7 @@ - + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj index effe1e51f4..7aa53a7476 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj @@ -25,7 +25,7 @@ - + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj index a93043f4a8..57bcb8be37 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj @@ -39,7 +39,7 @@ - + diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj index 4ece64bd2a..938b36c9e8 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.csproj b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.csproj index 5d3d56720d..e3eccbec46 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.csproj +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj index 27f50e0689..e314e532f9 100644 --- a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj @@ -34,7 +34,7 @@ - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj index 8d0ceeb07a..76f59c8911 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj @@ -9,7 +9,7 @@ - + @@ -75,7 +75,7 @@ - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj index c377099e4f..fa14d2b867 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj @@ -9,7 +9,7 @@ - + @@ -76,11 +76,11 @@ - + - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj index 1e7ab8d272..e53c4fc5db 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj @@ -7,7 +7,7 @@ - + @@ -69,8 +69,8 @@ - - + + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj index 1d8766fec7..9987e82790 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj @@ -7,7 +7,7 @@ - + @@ -70,12 +70,12 @@ - - + + - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj index 41033c4eab..011eac03ec 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj @@ -7,7 +7,7 @@ - + @@ -72,7 +72,7 @@ - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj index fd0c48af53..ed6d30bac2 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj @@ -7,7 +7,7 @@ - + @@ -73,11 +73,11 @@ - + - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj index dac1ff57ce..34af3519c6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj @@ -15,9 +15,9 @@ - + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj index cfcbea04d4..8425769259 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj @@ -15,7 +15,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj index 4b76b91ccd..46c90ad4c7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj index 7ee3d93b80..c6c26a1c62 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj @@ -17,10 +17,10 @@ - + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj index 8942c83134..64f7ba05f4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -25,7 +25,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj index 50ebd61a24..9277d952be 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj @@ -21,7 +21,7 @@ - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index ea44661a35..800dcbf3da 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -10,10 +10,10 @@ - + - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj index 5fbd48f168..09f3bba747 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj @@ -10,7 +10,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index 81d4bcffba..b21f95cf6f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -31,9 +31,9 @@ - + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index 6eb25ae27f..16a451cda4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -15,9 +15,9 @@ - + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index 976724f276..f83fb9f9f2 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -31,7 +31,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj index aa6e9dd689..f7c2ea234d 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj @@ -13,7 +13,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj index 6657fa42f4..c54db160e0 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj @@ -12,7 +12,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index 2800b17595..7c0d168034 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj index 1840044e4c..66d5efd55e 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj @@ -21,8 +21,8 @@ - - + + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index cba983970a..368d378885 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -13,7 +13,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj index 2580f1c57e..57ea860a60 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj @@ -15,12 +15,12 @@ - - + + - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj index 2d98f18334..b9aad6bf1d 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index a2041bf970..2b5cda9a68 100644 --- a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -12,11 +12,11 @@ - + - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj index 3a20fdb153..67219be5b6 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj index 383fb4a1e2..f7f2820dfa 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj @@ -14,9 +14,9 @@ - + - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index e2b1af07db..b48c14ab1e 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -10,12 +10,12 @@ - + - - - - + + + + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index d91ec3f273..10a79a8593 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -10,10 +10,10 @@ - + - - + + all runtime; build; native; contentfiles; analyzers diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index e1b1e2fccb..491a246ea1 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -10,9 +10,9 @@ - + - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj index aa8fd5fe5f..c807ce3049 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj @@ -10,9 +10,9 @@ - + - + all runtime; build; native; contentfiles; analyzers diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj index 49016bce6f..d468b62c59 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -13,7 +13,7 @@ - + diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index d1455cf92b..c6b9ea8d03 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -21,7 +21,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj index 20269aa37b..0dc4ddd733 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj @@ -10,7 +10,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj index aa03ce2497..b2a8dbed03 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj @@ -8,7 +8,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index 995c44cfd9..0d577f1e96 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj index e92149a072..bca4086c54 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj @@ -22,7 +22,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index 9d62fb7d38..31efe22b92 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -8,7 +8,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj index 9e49ab428f..9af92ffc88 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj @@ -8,12 +8,12 @@ - - + + - + diff --git a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index 6b5352c3e7..bd244a6e9a 100644 --- a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -13,7 +13,7 @@ - + diff --git a/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj b/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj index a3e769e45b..60168258f0 100644 --- a/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj +++ b/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj @@ -13,7 +13,7 @@ - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native From 6acc565a3f42f5bc80e35b565152c8e49da0c429 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 18 May 2022 18:09:11 +0800 Subject: [PATCH 10/51] Upgrade Serilog.Extensions.Hosting --- .../Volo.Abp.SettingManagement.DemoApp.csproj | 2 +- .../MyCompanyName.MyProjectName.csproj | 2 +- .../MyCompanyName.MyProjectName.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj index 8d5de742c4..d844f022ae 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj @@ -9,7 +9,7 @@ - + diff --git a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index 2b5cda9a68..b79488f83f 100644 --- a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -13,7 +13,7 @@ - + diff --git a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index bd244a6e9a..cead3f8c94 100644 --- a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -14,7 +14,7 @@ - + From 2c69850c7ba11492fb1ef7d210771cf501c24879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 19 May 2022 14:54:05 +0300 Subject: [PATCH 11/51] Revisit the article: Consuming REST APIs from a .NET Client Using ABP's Client Proxy System --- .../POST.md | 142 +++++++++--------- 1 file changed, 67 insertions(+), 75 deletions(-) diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md index dbf62d1628..894c710dc7 100644 --- a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md +++ b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md @@ -1,33 +1,18 @@ -# Consuming REST APIs from a .NET Client Using ABP's Client Proxy System -In this article, we will show how to consume Rest API by creating a new project and converting that from the dynamic client proxy to the static client proxy. Also, I will glance at the differences and similarities between static and dynamic generic proxies. - -Article flow -* Create a new ABP application with ABP CLI -* Create application service interface -* Implement the application service -* Consume the app service from the console application -* Convert application to use static client proxies -* Add authorization to the application service endpoint -* Grant the permission -* Further reading - -### Create a new ABP application with ABP CLI -Firstly create a new template via ABP CLI. +# Consuming HTTP APIs from a .NET Client Using ABP's Client Proxy System -````shell -abp new Acme.BookStore -t app -```` - -> If you haven't installed it yet, you should install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI). +In this article, I will show how to consume your HTTP APIs from a .NET application using ABP's [dynamic](https://docs.abp.io/en/abp/latest/API/Dynamic-CSharp-API-Clients) and [static](https://docs.abp.io/en/abp/latest/API/Static-CSharp-API-Clients) client-side proxy systems. I will start by creating a new project and consume the HTTP APIs from a .NET console application using dynamic client proxies. Then I will switch to static client proxies. Finally, I will glance at the differences and similarities between static and dynamic generic proxies. -After restoring the project will download the NuGet packages. +## Create a new ABP application with the ABP CLI +Firstly create a new solution via [ABP CLI](https://docs.abp.io/en/abp/latest/CLI): -Now you should run the DbMigrator project to up your database and your project is ready for running. +````shell +abp new Acme.BookStore +```` -From now on, we will add some files to show the case to you. +> See ABP's [Getting Started document](https://docs.abp.io/en/abp/latest/Getting-Started-Setup-Environment?UI=MVC&DB=EF&Tiered=No) to learn how to create and run your application, if you haven't done it before. -### Create application service interface -Define an interface for the application service. Create an `IBookAppService` interface in the `Books` folder (namespace) of the `Acme.BookStore.Application.Contracts` project: +## Create application service interface +I will start by creating an application service and expose it as HTTP API to be consumed by remote clients. First, define an interface for the application service; Create an `IBookAppService` interface in the `Books` folder (namespace) of the `Acme.BookStore.Application.Contracts` project: ````csharp using System.Threading.Tasks; @@ -38,12 +23,12 @@ namespace Acme.BookStore.Books { public interface IBookAppService : IApplicationService { - Task> GetListAsync(PagedAndSortedResultRequestDto input); + Task> GetListAsync(); } } ```` -Create a `Books` folder (namespace) in the `Acme.BookStore.Application.Contracts` project and add a `BookDto` class inside it: +Also add a `BookDto` class inside the same `Books` folder: ```csharp using System; @@ -51,20 +36,16 @@ using Volo.Abp.Application.Dtos; namespace Acme.BookStore.Books { - public class BookDto : AuditedEntityDto + public class BookDto { - public string AuthorName { get; set; } - public string Name { get; set; } - - public DateTime PublishDate { get; set; } - + public string AuthorName { get; set; } public float Price { get; set; } } } ``` -# Implement the application service +## Implement the application service It is time to implement the `IBookAppService` interface. Create a new class, named `BookAppService` in the `Books` namespace (folder) of the `Acme.BookStore.Application` project: ```csharp @@ -79,7 +60,7 @@ namespace Acme.BookStore.Books { public class BookAppService : ApplicationService, IBookAppService { - public Task> GetListAsync(PagedAndSortedResultRequestDto input) + public Task> GetListAsync() { var bookDtos = new List() { @@ -95,10 +76,10 @@ namespace Acme.BookStore.Books } } ``` -It simply returns a list of books. You probably want to get the books from a database, but it doesn't matter for this article. To do it you can visit [here](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF) +It simply returns a list of books. You probably want to get the books from a database, but it doesn't matter for this article. If you want it, you can fully implement [this tutorial](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF). -### Consume the app service from the console application -Change `ClientDemoService` as shown the following in the `Acme.BookStore.HttpApi.Client.ConsoleTestApp` project under the test folder. +## Consume the app service from the console application +The startup solution comes with an example .NET console application (`Acme.BookStore.HttpApi.Client.ConsoleTestApp`) that is fully configured to consume your HTTP APIs remotely. Change `ClientDemoService` as shown the following in the `Acme.BookStore.HttpApi.Client.ConsoleTestApp` project (it is under the `test` folder). ```csharp using Acme.BookStore.Books; @@ -127,13 +108,19 @@ public class ClientDemoService : ITransientDependency } ``` -The output should be -> Books: Anna Karenina, Crime and Punishment, Mother +We are basically injecting the `IBookAppService` interface to consume the remote service. ABP handles all the details (performing HTTP request, deserializing the resulting JSON object, etc) for us. + +You can run the application to see the output: + +```` +Books: Anna Karenina, Crime and Punishment, Mother +```` -### Convert application to use static client proxies +## Convert application to use static client proxies Before showing you how to use static client proxies instead of dynamic client proxies, I ask you to talk differences between both approaches. Their similarities, advantages and disadvantages to each other. -##### Benefits +**Benefits (both valid for dynamic and static proxies):** + * Maps C# method calls to remote server HTTP calls by considering the HTTP method, route, query string parameters, request payload and other details. * Authenticates the HTTP Client by adding access token to the HTTP header. * Serializes to and deserialize from JSON. @@ -141,16 +128,11 @@ Before showing you how to use static client proxies instead of dynamic client pr * Add correlation id, current tenant id and the current culture to the request. * Properly handles the error messages sent by the server and throws proper exceptions. -##### Differences -Static generic proxies provide better performance because it doesn't need to run on runtime, but you should **re-generate** once changing API endpoint definition. Dynamic generic proxies don't need **re-generate** again because it works on the runtime but it happens more a bit time. +**Differences of dynamic and static proxies:** -Now focus on how to do it, -Firstly add Volo.Abp.Http.Client NuGet package to your client project: -````shell -Install-Package Volo.Abp.Http.Client -```` +Static generic proxies provide **better performance** because it doesn't need to run on runtime, but you should **re-generate** once changing the API endpoint definition. Dynamic generic proxies don't need re-generate again because it works on the runtime but it has a slight performance penalty. -> The [application startup template](https://docs.abp.io/en/abp/latest/Startup-Templates/Application) comes pre-configured for the **dynamic** client proxy generation, in the `HttpApi.Client` project. If you want to switch to the **static** client proxies, change `context.Services.AddHttpClientProxies` to `context.Services.AddStaticHttpClientProxies` in the module class of your `HttpApi.Client` project. +The [application startup template](https://docs.abp.io/en/abp/latest/Startup-Templates/Application) comes pre-configured for the **dynamic** client proxy generation, in the `HttpApi.Client` project. If you want to switch to the **static** client proxies, you should change `context.Services.AddHttpClientProxies` to `context.Services.AddStaticHttpClientProxies` in the module class of your `HttpApi.Client` project: ```csharp public class BookStoreHttpApiClientModule : AbpModule @@ -159,7 +141,7 @@ public class BookStoreHttpApiClientModule : AbpModule public override void ConfigureServices(ServiceConfigurationContext context) { - //Other configurations + // Other configurations... context.Services.AddStaticHttpClientProxies( typeof(BookStoreApplicationContractsModule).Assembly, @@ -172,24 +154,28 @@ public class BookStoreHttpApiClientModule : AbpModule `AddStaticHttpClientProxies` method gets an assembly, finds all service interfaces in the given assembly, and prepares for static client proxy generation. -Now you're ready to generate the client proxy code by running the following command in the root folder of your client project when your project is running. +Now you're ready to generate the client proxy code by running the following command in the root folder of your client project while your server-side project is running: ````bash abp generate-proxy -t csharp -u http://localhost:44397/ ```` -You should have seen the generated files under the selected folder. -
+> The URL (`-u` parameter's value) might be different for your application. It should be server's root URL. + +You should have seen the generated files under the selected folder: + ![files of the static proxy](./static-proxy.png) -Now you can run your test console application and you should see the same output. -> Books: Anna Karenina, Crime and Punishment, Mother +Now you can run the console client application again. You should see the same output: -### Add authorization -ABP Framework provides an authorization system based on the ASP.NET Core's authorization infrastructure. -Even so, to use that need to make some configurations. +```` +Books: Anna Karenina, Crime and Punishment, Mother +```` -Under `Acme.BookStore.Application.Contracts` open `BookStorePermissions` and paste the below code +## Add authorization +ABP Framework provides an [authorization system](https://docs.abp.io/en/abp/latest/Authorization) based on the [ASP.NET Core's authorization infrastructure](https://docs.microsoft.com/en-us/aspnet/core/security/authorization/introduction). We can define permissions and restrict access to some of our application's functionalities, so only the allowed users/clients can use these functionalities. Here, I will define a permission to be able to get the list of books. + +Under `Acme.BookStore.Application.Contracts` open `BookStorePermissions` and paste the below code: ```csharp namespace Acme.BookStore.Permissions; @@ -214,31 +200,37 @@ public class BookStorePermissionDefinitionProvider : PermissionDefinitionProvide { public override void Define(IPermissionDefinitionContext context) { - var bookStoreGroup = context.AddGroup(BookStorePermissions.GroupName, L("Permission:BookStore")); - bookStoreGroup.AddPermission(BookStorePermissions.Books.Default, L("Permission:Books")); - } - - private static LocalizableString L(string name) - { - return LocalizableString.Create(name); + var bookStoreGroup = context.AddGroup(BookStorePermissions.GroupName); + bookStoreGroup.AddPermission(BookStorePermissions.Books.Default); } } ``` -And now you should add [Authorize(BookStorePermissions.Books.Default)] to `BookAppService` -If you don't give permission you should see the following error on the console application. +We can now add `[Authorize(BookStorePermissions.Books.Default)]` attribute to the `BookAppService` class: -> Authorization failed. These requirements were not met: +````csharp +[Authorize(BookStorePermissions.Books.Default)] +public class BookAppService : ApplicationService, IBookAppService +{ + ... +} +```` + +If you now run the server, then run the console client application, you will see the following error on the console application: + +```` +Authorization failed. These requirements were not met: PermissionRequirement: BookStore.Books AuthenticationScheme: Identity.Application was forbidden. Request finished HTTP/1.1 GET https://localhost:44397/api/app/book?SkipCount=0&MaxResultCount=10&api-version=1.0 - - - 403 0 - 156.9766ms +```` -After completing that you can make the localization configuration and you should give permission at the Admin UI side. You can see the same output again and all will be alright. +To fix the problem, we should grant permission for the admin user. We are granting permission to the admin user because the console application is configured to use Resource Owner Password Grant Flow. That means the client application is consuming services on behalf of the admin user. You can see the configuration in the `appsettings.json` file of the console application. -### Further Reading -In this small tutorial, I explained how you can create an example project and apply static client proxy instead of dynamic client proxy. Also summarized the differences between both approaches. +**TODO: Show how to give permission, with screenshots** -If you want to get more information, you can read the following documents: +### Further Reading +In this tutorial, I explained how you can create an example project and apply static client proxy instead of dynamic client proxy. Also summarized the differences between both approaches. If you want to get more information, you can read the following documents: * [Static C# API Client Proxies](https://docs.abp.io/en/abp/latest/API/Static-CSharp-API-Clients) * [Dynamic C# API Client Proxies](https://docs.abp.io/en/abp/latest/API/Dynamic-CSharp-API-Clients) -* [Web Application Development Tutorial ](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF) +* [Web Application Development Tutorial](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF) From b9f6b095f7dbaec2d3a112add1d09cb2968727b1 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Thu, 19 May 2022 19:35:29 +0300 Subject: [PATCH 12/51] Add docs for AbpLoadingDirective --- docs/en/UI/Angular/Loading-Directive.md | 44 ++++++++++++++++++++++ docs/en/UI/Angular/images/abp-loading.png | Bin 0 -> 55307 bytes docs/en/docs-nav.json | 4 ++ 3 files changed, 48 insertions(+) create mode 100644 docs/en/UI/Angular/Loading-Directive.md create mode 100644 docs/en/UI/Angular/images/abp-loading.png diff --git a/docs/en/UI/Angular/Loading-Directive.md b/docs/en/UI/Angular/Loading-Directive.md new file mode 100644 index 0000000000..9ac491289d --- /dev/null +++ b/docs/en/UI/Angular/Loading-Directive.md @@ -0,0 +1,44 @@ +# Loading Directive + + +You may want to block a part of UI and show a spinner for a while; the `LoadingDirective` directive is making this for you. `LoadingDirective` has been exposed by the `@abp/ng.theme.shared` package. + + +## Getting Started + +In order to use the `LoadingDirective` in an HTML template, the **`ThemeSharedModule`** should be imported into your module like this: + +```js +// ... +import { ThemeSharedModule } from '@abp/ng.theme.shared'; + +@NgModule({ + //... + imports: [..., ThemeSharedModule], +}) +export class MyFeatureModule {} +``` + + +## Usage + +The `LoadingDirective` is easy to use. The directive's selector is **`abpLoading`**. By adding the `abpLoading` attribute to an HTML element , you can activate the `LoadingDirectiveective` for the HTML element when value is true. + +See an example usage: + +```html +

+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Laboriosam commodi quae aspernatur, + corporis velit et suscipit id consequuntur amet minima expedita cum reiciendis dolorum + cupiditate? Voluptas eaque voluptatum odio deleniti quo vel illum nemo accusamus nulla ratione + impedit dolorum expedita necessitatibus fugiat ullam beatae, optio eum cupiditate ducimus + architecto. +
+``` + + +The `abpLoading` attribute has been added to the `
` element that containing very long text inside to activate the `LoadingDirective`. + +See the result: + +![Loading directive result](./images/abp-loading.png) \ No newline at end of file diff --git a/docs/en/UI/Angular/images/abp-loading.png b/docs/en/UI/Angular/images/abp-loading.png new file mode 100644 index 0000000000000000000000000000000000000000..50073f6d6393e8d00416fc9439dacf4eb2f186e5 GIT binary patch literal 55307 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 literal 0 HcmV?d00001 diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index dafa6c3486..1526e884c9 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -1028,6 +1028,10 @@ "text": "Confirmation Popup", "path": "UI/Angular/Confirmation-Service.md" }, + { + "text": "Loading Directive", + "path": "UI/Angular/Loading-Directive.md" + }, { "text": "Toast Overlay", "path": "UI/Angular/Toaster-Service.md" From 574cbc159121a629bcac6dc725b31e52bc2ab507 Mon Sep 17 00:00:00 2001 From: Hamza Albreem <94292623+braim23@users.noreply.github.com> Date: Fri, 20 May 2022 09:43:26 +0300 Subject: [PATCH 13/51] quick fix --- docs/en/UI/Angular/Loading-Directive.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/en/UI/Angular/Loading-Directive.md b/docs/en/UI/Angular/Loading-Directive.md index 9ac491289d..18ff4baaeb 100644 --- a/docs/en/UI/Angular/Loading-Directive.md +++ b/docs/en/UI/Angular/Loading-Directive.md @@ -1,7 +1,7 @@ # Loading Directive -You may want to block a part of UI and show a spinner for a while; the `LoadingDirective` directive is making this for you. `LoadingDirective` has been exposed by the `@abp/ng.theme.shared` package. +You may want to block a part of the UI and show a spinner for a while; the `LoadingDirective` directive makes this for you. `LoadingDirective` has been exposed by the `@abp/ng.theme.shared` package. ## Getting Started @@ -22,7 +22,7 @@ export class MyFeatureModule {} ## Usage -The `LoadingDirective` is easy to use. The directive's selector is **`abpLoading`**. By adding the `abpLoading` attribute to an HTML element , you can activate the `LoadingDirectiveective` for the HTML element when value is true. +The `LoadingDirective` is easy to use. The directive's selector is **`abpLoading`**. By adding the `abpLoading` attribute to an HTML element, you can activate the `LoadingDirectiveective` for the HTML element when the value is true. See an example usage: @@ -37,8 +37,8 @@ See an example usage: ``` -The `abpLoading` attribute has been added to the `
` element that containing very long text inside to activate the `LoadingDirective`. +The `abpLoading` attribute has been added to the `
` element that contains very a long text inside to activate the `LoadingDirective`. See the result: -![Loading directive result](./images/abp-loading.png) \ No newline at end of file +![Loading directive result](./images/abp-loading.png) From 67b3d58ab9fe3ba622ffc0b91f7d580ad1c9d904 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 9 May 2022 11:39:55 +0300 Subject: [PATCH 14/51] Separate Blazor WASM & Server for Blazor\Basic-Theme.md --- docs/en/UI/Blazor/Basic-Theme.md | 75 +++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 6 deletions(-) diff --git a/docs/en/UI/Blazor/Basic-Theme.md b/docs/en/UI/Blazor/Basic-Theme.md index 2c034f258a..b4eb1c4f92 100644 --- a/docs/en/UI/Blazor/Basic-Theme.md +++ b/docs/en/UI/Blazor/Basic-Theme.md @@ -1,5 +1,12 @@ # Blazor UI: Basic Theme +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` + The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist theme that doesn't add any styling on top of the plain [Bootstrap](https://getbootstrap.com/). You can take the Basic Theme as the **base theme** and build your own theme or styling on top of it. See the *Customization* section. > If you are looking for a professional, enterprise ready theme, you can check the [Lepton Theme](https://commercial.abp.io/themes), which is a part of the [ABP Commercial](https://commercial.abp.io/). @@ -10,16 +17,48 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist **This theme is already installed** when you create a new solution using the [startup templates](../../Startup-Templates/Index.md). If you need to manually install it, follow the steps below: +{{if UI == "Blazor"}} + * Install the [Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme) NuGet package to your web project. * Add `AbpAspNetCoreComponentsWebAssemblyBasicThemeModule` into the `[DependsOn(...)]` attribute for your [module class](../../Module-Development-Basics.md) in the your Blazor UI project. * Use `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic.App` as the root component of your application in the `ConfigureServices` method of your module: -````csharp -var builder = context.Services.GetSingletonInstance(); -builder.RootComponents.Add("#ApplicationContainer"); -```` + ```csharp + var builder = context.Services.GetSingletonInstance(); + builder.RootComponents.Add("#ApplicationContainer"); + ``` + `#ApplicationContainer` is a selector (like `
Loading...
`) in the `index.html`. + +* Execute `abp-bundle` command under blazor project once. + +{{end}} + + +{{if UI == "BlazorServer"}} + +* Make sure [AspNetCore Basic Theme](../AspNetCore/Basic-Theme.md) installation steps are completed. + +* Install the [Volo.Abp.AspNetCore.Components.Server.BasicTheme](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Components.Server.BasicTheme) NuGet package to your web project. + +* Add `AbpAspNetCoreComponentsServerBasicThemeModule` into the `[DependsOn(...)]` attribute for your [module class](../../Module-Development-Basics.md) in the your Blazor UI project. + +* Perform following changes in `Pages/_Host.cshtml` file + * Add usings at the top of the page. + ```html + @using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling + @using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic + ``` + * Add Basic theme style bundled between `` tags. + ```html + + ``` + * Add `App` component of Basic Theme in the body section of page. + ```html + + ``` + +{{end}} -`#ApplicationContainer` is a selector (like `
Loading...
`) in the `index.html`. ## The Layout @@ -52,15 +91,39 @@ See the [Customization / Overriding Components](Customization-Overriding-Compone You can run the following [ABP CLI](../../CLI.md) command in **Blazor WebAssembly** project directory to copy the source code to your solution: + +{{if UI == "Blazor"}} + `abp add-package Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme --with-source-code --add-to-solution-file` Then, navigate to downloaded `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme` project directory and run: `abp add-package Volo.Abp.AspNetCore.Components.Web.BasicTheme --with-source-code --add-to-solution-file` +{{end}} + +{{if UI == "BlazorServer"}} + +`abp add-package Volo.Abp.AspNetCore.Components.Server.BasicTheme --with-source-code --add-to-solution-file` + +Then, navigate to downloaded `Volo.Abp.AspNetCore.Components.Server.BasicTheme` project directory and run: + +`abp add-package Volo.Abp.AspNetCore.Components.Web.BasicTheme --with-source-code --add-to-solution-file` + +{{end}} + ---- -Or, you can download the [source code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme) of the Basic Theme, manually copy the project content into your solution, re-arrange the package/module dependencies (see the Installation section above to understand how it was installed to the project) and freely customize the theme based on your application requirements. + +Or, you can download the source code of the Basic Theme, manually copy the project content into your solution, re-arrange the package/module dependencies (see the Installation section above to understand how it was installed to the project) and freely customize the theme based on your application requirements. + +{{if UI == "Blazor"}} +- [Basic Theme Source Code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme) +{{end}} + +{{if UI == "BlazorServer"}} +- [Basic Theme Source Code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme) +{{end}} ## See Also From 927eeddafb700c0053f92352835745cd1c201c69 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 9 May 2022 11:45:11 +0300 Subject: [PATCH 15/51] Fix typo in Blazor\Basic-Theme.md --- docs/en/UI/Blazor/Basic-Theme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Blazor/Basic-Theme.md b/docs/en/UI/Blazor/Basic-Theme.md index b4eb1c4f92..a4434aed44 100644 --- a/docs/en/UI/Blazor/Basic-Theme.md +++ b/docs/en/UI/Blazor/Basic-Theme.md @@ -48,7 +48,7 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist @using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling @using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic ``` - * Add Basic theme style bundled between `` tags. + * Add Basic theme style bundles between `` tags. ```html ``` From 6403ab57c254cc74487cd6b2650eeca5754a27b3 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 9 May 2022 11:46:18 +0300 Subject: [PATCH 16/51] Remove multiple blank lines in Blazor\Basic-Theme.md --- docs/en/UI/Blazor/Basic-Theme.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/en/UI/Blazor/Basic-Theme.md b/docs/en/UI/Blazor/Basic-Theme.md index a4434aed44..4fb4d7bbaa 100644 --- a/docs/en/UI/Blazor/Basic-Theme.md +++ b/docs/en/UI/Blazor/Basic-Theme.md @@ -33,7 +33,6 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist {{end}} - {{if UI == "BlazorServer"}} * Make sure [AspNetCore Basic Theme](../AspNetCore/Basic-Theme.md) installation steps are completed. @@ -59,7 +58,6 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist {{end}} - ## The Layout ![basic-theme-application-layout](../../images/basic-theme-application-layout.png) @@ -91,7 +89,6 @@ See the [Customization / Overriding Components](Customization-Overriding-Compone You can run the following [ABP CLI](../../CLI.md) command in **Blazor WebAssembly** project directory to copy the source code to your solution: - {{if UI == "Blazor"}} `abp add-package Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme --with-source-code --add-to-solution-file` @@ -114,7 +111,6 @@ Then, navigate to downloaded `Volo.Abp.AspNetCore.Components.Server.BasicTheme` ---- - Or, you can download the source code of the Basic Theme, manually copy the project content into your solution, re-arrange the package/module dependencies (see the Installation section above to understand how it was installed to the project) and freely customize the theme based on your application requirements. {{if UI == "Blazor"}} From f224b5594f305e8ada0b5c1985856ca1ddd8d1e9 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 9 May 2022 14:54:09 +0300 Subject: [PATCH 17/51] Update Theming.md --- docs/en/UI/Blazor/Theming.md | 57 ++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/Blazor/Theming.md b/docs/en/UI/Blazor/Theming.md index 067052e322..6cb0f0c66b 100644 --- a/docs/en/UI/Blazor/Theming.md +++ b/docs/en/UI/Blazor/Theming.md @@ -1,5 +1,12 @@ # Blazor UI: Theming +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` + ## Introduction ABP Framework provides a complete **UI Theming** system with the following goals: @@ -25,8 +32,18 @@ Currently, two themes are **officially provided**: ### The Base Libraries +{{if UI == "Blazor"}} + All the themes must depend on the [Volo.Abp.AspNetCore.Components.WebAssembly.Theming](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Components.WebAssembly.Theming) NuGet package, so they are indirectly depending on the following libraries: +{{end}} + +{{if UI == "BlazorServer"}} + +All the themes must depend on the [Volo.Abp.AspNetCore.Components.Server.Theming](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Components.Server.Theming) NuGet package, so they are indirectly depending on the following libraries: + +{{end}} + * [Twitter Bootstrap](https://getbootstrap.com/) as the fundamental HTML/CSS framework. * [Blazorise](https://github.com/stsrki/Blazorise) as a component library that supports the Bootstrap and adds extra components like Data Grid and Tree. * [FontAwesome](https://fontawesome.com/) as the fundamental CSS font library. @@ -61,9 +78,17 @@ The application layout typically includes the following parts; A theme is simply a Razor Class Library. -### The Easy Way +### The Easiest Way + +The easiest way to create a new theme is copying the [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) and customizing it. -The easiest way to create a new theme is to copy the [Basic Theme Source Code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme) and customize it. Once you get a copy of the theme in your solution, remove the `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme` NuGet package and reference to the local project. +{{if UI == "Blazor"}} +Once you get a copy of the theme in your solution, remove the `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme` NuGet package and reference to the local project. +{{end}} + +{{if UI == "BlazorServer"}} +Once you get a copy of the theme in your solution, remove `Volo.Abp.AspNetCore.Components.Server.BasicTheme` and `Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic` NuGet packages and add references to local projects. +{{end}} ### Global Styles / Scripts @@ -165,6 +190,9 @@ Configure(options => Language Selection toolbar item is generally a dropdown that is used to switch between languages. `ILanguageProvider` is used to get the list of available languages and `CultureInfo.CurrentUICulture` is used to learn the current language. + +{{if UI == "Blazor"}} + Local Storage is used to get and set the current language with the `Abp.SelectedLanguage` key. **Example: Get the currently selected language** @@ -192,6 +220,31 @@ The theme should reload the page after changing the language: await JsRuntime.InvokeVoidAsync("location.reload"); ```` +{{end}} + +{{if UI == "BlazorServer"}} +Localization works on Server side in Blazor Server. So, regular AspNetCore localization middleware is used. + +**Example: Get the currently selected language** + +````csharp +var selectedLanguageName = CultureInfo.CurrentCulture.Name; +```` + +**Example: Set the selected language** + +````csharp +// Get current url. +var relativeUrl = NavigationManager.Uri.RemovePreFix(NavigationManager.BaseUri).EnsureStartsWith('/'); + +// Redirect to ABP language switch endpoint. +NavigationManager.NavigateTo( + $"/Abp/Languages/Switch?culture={newLanguage.CultureName}&uiCulture={newLanguage.UiCultureName}&returnUrl={relativeUrl}", + forceLoad: true +); +```` +{{end}} + ##### User Menu User menu includes links related to the user account. `IMenuManager` is used just like the Main Menu, but this time with `StandardMenus.User` parameter like shown below: From 28bae5913a8fad3b46f292df0e0041849570d773 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 11:02:59 +0300 Subject: [PATCH 18/51] Add LeptonX to available themes in blazor documentation --- docs/en/UI/Blazor/Theming.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/UI/Blazor/Theming.md b/docs/en/UI/Blazor/Theming.md index 6cb0f0c66b..83c54c652c 100644 --- a/docs/en/UI/Blazor/Theming.md +++ b/docs/en/UI/Blazor/Theming.md @@ -23,10 +23,11 @@ In order to accomplish these goals, ABP Framework; ### Current Themes -Currently, two themes are **officially provided**: +Currently, three themes are **officially provided**: * The [Basic Theme](Basic-Theme.md) is the minimalist theme with the plain Bootstrap style. It is **open source and free**. * The [Lepton Theme](https://commercial.abp.io/themes) is a **commercial** theme developed by the core ABP team and is a part of the [ABP Commercial](https://commercial.abp.io/) license. +* The [LeptonX Theme](https://x.leptontheme.com/) is a theme that has a [commercial](https://docs.abp.io/en/commercial/latest/themes/lepton-x/commercial/blazor) and a [lite](../../Themes/LeptonXLite/blazor.md) version. ## Overall From f3cffa35c2384ab140ce8c0c875289975a8e1c26 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 11:14:02 +0300 Subject: [PATCH 19/51] Remove namespace and usings since they're different between blazor server and wasm --- docs/en/UI/Blazor/Toolbars.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/docs/en/UI/Blazor/Toolbars.md b/docs/en/UI/Blazor/Toolbars.md index b8cca6077a..3ff1b7f135 100644 --- a/docs/en/UI/Blazor/Toolbars.md +++ b/docs/en/UI/Blazor/Toolbars.md @@ -34,23 +34,16 @@ This sample simply shows a message. In real life, you probably want to call an H Now, we can create a class implementing the `IToolbarContributor` interface: ````csharp -using System.Threading.Tasks; -using MyCompanyName.MyProjectName.Blazor.Components; -using Volo.Abp.AspNetCore.Components.WebAssembly.Theming.Toolbars; - -namespace MyCompanyName.MyProjectName.Blazor +public class MyToolbarContributor : IToolbarContributor { - public class MyToolbarContributor : IToolbarContributor + public Task ConfigureToolbarAsync(IToolbarConfigurationContext context) { - public Task ConfigureToolbarAsync(IToolbarConfigurationContext context) + if (context.Toolbar.Name == StandardToolbars.Main) { - if (context.Toolbar.Name == StandardToolbars.Main) - { - context.Toolbar.Items.Insert(0, new ToolbarItem(typeof(Notification))); - } - - return Task.CompletedTask; + context.Toolbar.Items.Insert(0, new ToolbarItem(typeof(Notification))); } + + return Task.CompletedTask; } } ```` From 5e95f95e3a1dd8fc52561ad2469a5e3baa4b84a3 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 11:37:10 +0300 Subject: [PATCH 20/51] Add Blazor Server seperation to the Authentication.md --- docs/en/UI/Blazor/Authentication.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/Blazor/Authentication.md b/docs/en/UI/Blazor/Authentication.md index 9dc34ebce5..5f18345d7d 100644 --- a/docs/en/UI/Blazor/Authentication.md +++ b/docs/en/UI/Blazor/Authentication.md @@ -1,11 +1,28 @@ # Blazor UI: Authentication -The [application startup template](../../Startup-Templates/Application.md) is properly configured to use OpenId Connect to authenticate the user through the server side login form; +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` +The [application startup template](../../Startup-Templates/Application.md) is properly configured to use OpenId Connect to authenticate the user; + +{{if UI == "BlazorServer"}} +* When the Blazor application needs to authenticate, it is redirected to the login page built with Razor Pages UI in the same application. +* Users can enter username & password to login if they already have an account. If not, they can use the register form to create a new user. They can also use forgot password and other features. +* Finally, they are redirected back to the Blazor application to complete the login process. + +{{end}} + +{{if UI == "Blazor"}} * When the Blazor application needs to authenticate, it is redirected to the server side. -* Users can enter username & password to login if they already have an account. If not, they can use the register form to create a new user. They can also use forgot password and other features. The server side uses IdentityServer4 to handle the authentication. +* Users can enter username & password to login if they already have an account. If not, they can use the register form to create a new user. They can also use forgot password and other features., + * Finally, they are redirected back to the Blazor application to complete the login process. This is a typical and recommended approach to implement authentication in Single-Page Applications. The client side configuration is done in the startup template, so you can change it. +{{end}} See the [Blazor Security document](https://docs.microsoft.com/en-us/aspnet/core/blazor/security) to understand and customize the authentication process. \ No newline at end of file From c0ae6b1cb59c1228a9f7cdccdc3e1da08ec3755a Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 17:27:19 +0300 Subject: [PATCH 21/51] Add Blazor Server seperation to the Error-Handling.md --- docs/en/UI/Blazor/Error-Handling.md | 36 +++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/docs/en/UI/Blazor/Error-Handling.md b/docs/en/UI/Blazor/Error-Handling.md index 35aff041af..6582ee0c8e 100644 --- a/docs/en/UI/Blazor/Error-Handling.md +++ b/docs/en/UI/Blazor/Error-Handling.md @@ -1,5 +1,12 @@ # Blazor UI: Error Handling +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` + Blazor, by default, shows a yellow line at the bottom of the page if any unhandled exception occurs. However, this is not useful in a real application. ABP provides an automatic error handling system for the Blazor UI. @@ -20,6 +27,8 @@ There are different type of `Exception` classes handled differently by the ABP F **Example** +{{if UI == "BlazorServer"}} + ````csharp @page "/" @using Volo.Abp @@ -28,13 +37,6 @@ There are different type of `Exception` classes handled differently by the ABP F @code { - //for Blazor WASM - private void TestException() - { - throw new UserFriendlyException("A user friendly error message!"); - } - - //for Blazor Server private async Task TestException() { try @@ -49,6 +51,26 @@ There are different type of `Exception` classes handled differently by the ABP F } ```` +{{end}} + +{{if UI == "Blazor"}} + +````csharp +@page "/" +@using Volo.Abp + + + +@code +{ + private void TestException() + { + throw new UserFriendlyException("A user friendly error message!"); + } +} +```` +{{end}} + ABP automatically handle the exception and show an error message to the user: ![blazor-user-friendly-exception](../../images/blazor-user-friendly-exception.png) From 05cf33798901c0d72768fc7b8ca48393f065b04f Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 17:30:50 +0300 Subject: [PATCH 22/51] Add Blazor Server seperation to the Customization-Overriding-Components.md --- .../Customization-Overriding-Components.md | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/docs/en/UI/Blazor/Customization-Overriding-Components.md b/docs/en/UI/Blazor/Customization-Overriding-Components.md index e62e0a0ff4..e288a439b0 100644 --- a/docs/en/UI/Blazor/Customization-Overriding-Components.md +++ b/docs/en/UI/Blazor/Customization-Overriding-Components.md @@ -1,5 +1,12 @@ # Blazor UI: Customization / Overriding Components +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` + This document explains how to override the user interface of a depended [application module](../../Modules/Index.md) or [theme](Theming.md) for Blazor applications. ## Overriding a Razor Component @@ -26,6 +33,30 @@ The next step is to create a razor component, like `MyBranding.razor`, in your a The content of the `MyBranding.razor` is shown below: +{{if UI == "BlazorServer"}} + +````html +@using Volo.Abp.DependencyInjection +@using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic +@inherits Branding +@attribute [ExposeServices(typeof(Branding))] +@attribute [Dependency(ReplaceServices = true)] + + + +```` + +Let's explain the code: + +* `@inherits Branding` line inherits the Branding component defined by the [Basic Theme](Basic-Theme.md) (in the `Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic` namespace). +* `@attribute [ExposeServices(typeof(Branding))]` registers this service (component) to [dependency injection](../../Dependency-Injection.md) for the `Branding` service (component). +* `@attribute [Dependency(ReplaceServices = true)]` replaces the `Branding` class (component) with this new `MyBranding` class (component). +* The rest of the code is related the content and styling of the component. + +{{end}} + +{{if UI == "Blazor"}} + ````html @using Volo.Abp.DependencyInjection @using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic @@ -44,6 +75,8 @@ Let's explain the code: * `@attribute [Dependency(ReplaceServices = true)]` replaces the `Branding` class (component) with this new `MyBranding` class (component). * The rest of the code is related the content and styling of the component. +{{end}} + Now, you can run the application to see the result: ![bookstore-added-logo](../../images/bookstore-added-logo.png) @@ -56,6 +89,17 @@ If you prefer to use code-behind file for the C# code of your component, you can **MyBlazor.razor** +{{if UI == "BlazorServer"}} +````html +@using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic +@inherits Branding + + + +```` +{{end}} + +{{if UI == "Blazor"}} ````html @using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic @inherits Branding @@ -63,8 +107,27 @@ If you prefer to use code-behind file for the C# code of your component, you can ```` +{{end}} **MyBlazor.razor.cs** +{{if UI == "BlazorServer"}} + +````csharp +using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic; +using Volo.Abp.DependencyInjection; + +namespace MyProject.Blazor.Components +{ + [ExposeServices(typeof(Branding))] + [Dependency(ReplaceServices = true)] + public partial class MyBranding + { + + } +} +```` +{{end}} +{{if UI == "Blazor"}} ````csharp using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic; @@ -80,6 +143,7 @@ namespace MyProject.Blazor.Components } } ```` +{{end}} ## Theming From a19018ca98e41b591b27329d6431ed7f7307f32d Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 09:26:32 +0300 Subject: [PATCH 23/51] Update BlazorServer authentication section in docs --- docs/en/UI/Blazor/Authentication.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/en/UI/Blazor/Authentication.md b/docs/en/UI/Blazor/Authentication.md index 5f18345d7d..45aafabaf3 100644 --- a/docs/en/UI/Blazor/Authentication.md +++ b/docs/en/UI/Blazor/Authentication.md @@ -10,9 +10,7 @@ The [application startup template](../../Startup-Templates/Application.md) is properly configured to use OpenId Connect to authenticate the user; {{if UI == "BlazorServer"}} -* When the Blazor application needs to authenticate, it is redirected to the login page built with Razor Pages UI in the same application. -* Users can enter username & password to login if they already have an account. If not, they can use the register form to create a new user. They can also use forgot password and other features. -* Finally, they are redirected back to the Blazor application to complete the login process. +The Blazor Server application UI is actually a hybrid application that is combined with the MVC UI, and uses the login page provided by the MVC UI. When users enter a page that requires login, they are redirected to the `/Account/Login` page. Once they complete the login process, they are returned back to the application's UI. The login page also contains features like registration, password recovery, etc. {{end}} From eef4000a0397f5ce14c07aaf3d6a668af91597bc Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 09:27:45 +0300 Subject: [PATCH 24/51] Move Blazor Security document section to wasm --- docs/en/UI/Blazor/Authentication.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/Blazor/Authentication.md b/docs/en/UI/Blazor/Authentication.md index 45aafabaf3..eb39e05c6b 100644 --- a/docs/en/UI/Blazor/Authentication.md +++ b/docs/en/UI/Blazor/Authentication.md @@ -21,6 +21,8 @@ The Blazor Server application UI is actually a hybrid application that is combin * Finally, they are redirected back to the Blazor application to complete the login process. This is a typical and recommended approach to implement authentication in Single-Page Applications. The client side configuration is done in the startup template, so you can change it. -{{end}} -See the [Blazor Security document](https://docs.microsoft.com/en-us/aspnet/core/blazor/security) to understand and customize the authentication process. \ No newline at end of file + +See the [Blazor Security document](https://docs.microsoft.com/en-us/aspnet/core/blazor/security) to understand and customize the authentication process. + +{{end}} \ No newline at end of file From 2056b2753d2a76159fd83f98ce86c2b3463cb1f9 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 09:38:21 +0300 Subject: [PATCH 25/51] Use inline if statements in Customization-Overriding-Components.md --- docs/en/UI/Blazor/Basic-Theme.md | 2 +- .../Customization-Overriding-Components.md | 57 +++---------------- 2 files changed, 10 insertions(+), 49 deletions(-) diff --git a/docs/en/UI/Blazor/Basic-Theme.md b/docs/en/UI/Blazor/Basic-Theme.md index 4fb4d7bbaa..1d2dfb5c11 100644 --- a/docs/en/UI/Blazor/Basic-Theme.md +++ b/docs/en/UI/Blazor/Basic-Theme.md @@ -29,7 +29,7 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist ``` `#ApplicationContainer` is a selector (like `
Loading...
`) in the `index.html`. -* Execute `abp-bundle` command under blazor project once. +* Execute `abp bundle` command under blazor project once. {{end}} diff --git a/docs/en/UI/Blazor/Customization-Overriding-Components.md b/docs/en/UI/Blazor/Customization-Overriding-Components.md index e288a439b0..7dadc5bb82 100644 --- a/docs/en/UI/Blazor/Customization-Overriding-Components.md +++ b/docs/en/UI/Blazor/Customization-Overriding-Components.md @@ -33,33 +33,16 @@ The next step is to create a razor component, like `MyBranding.razor`, in your a The content of the `MyBranding.razor` is shown below: -{{if UI == "BlazorServer"}} ````html @using Volo.Abp.DependencyInjection +{{if UI == "BlazorServer"}} @using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic -@inherits Branding -@attribute [ExposeServices(typeof(Branding))] -@attribute [Dependency(ReplaceServices = true)] - - - -```` - -Let's explain the code: - -* `@inherits Branding` line inherits the Branding component defined by the [Basic Theme](Basic-Theme.md) (in the `Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic` namespace). -* `@attribute [ExposeServices(typeof(Branding))]` registers this service (component) to [dependency injection](../../Dependency-Injection.md) for the `Branding` service (component). -* `@attribute [Dependency(ReplaceServices = true)]` replaces the `Branding` class (component) with this new `MyBranding` class (component). -* The rest of the code is related the content and styling of the component. - {{end}} - {{if UI == "Blazor"}} - -````html -@using Volo.Abp.DependencyInjection @using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic +{{end}} + @inherits Branding @attribute [ExposeServices(typeof(Branding))] @attribute [Dependency(ReplaceServices = true)] @@ -70,13 +53,11 @@ Let's explain the code: Let's explain the code: -* `@inherits Branding` line inherits the Branding component defined by the [Basic Theme](Basic-Theme.md) (in the `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic` namespace). +* `@inherits Branding` line inherits the Branding component defined by the [Basic Theme](Basic-Theme.md) (in the {{if UI == "BlazorServer"}}`Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic`{{end}} {{if UI == "Blazor"}}`Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic`{{end}} namespace). * `@attribute [ExposeServices(typeof(Branding))]` registers this service (component) to [dependency injection](../../Dependency-Injection.md) for the `Branding` service (component). * `@attribute [Dependency(ReplaceServices = true)]` replaces the `Branding` class (component) with this new `MyBranding` class (component). * The rest of the code is related the content and styling of the component. -{{end}} - Now, you can run the application to see the result: ![bookstore-added-logo](../../images/bookstore-added-logo.png) @@ -89,48 +70,29 @@ If you prefer to use code-behind file for the C# code of your component, you can **MyBlazor.razor** -{{if UI == "BlazorServer"}} ````html +{{if UI == "BlazorServer"}} @using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic -@inherits Branding - - - -```` {{end}} - {{if UI == "Blazor"}} -````html @using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic +{{end}} @inherits Branding ```` -{{end}} **MyBlazor.razor.cs** -{{if UI == "BlazorServer"}} ````csharp +{{if UI == "BlazorServer"}} using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic; -using Volo.Abp.DependencyInjection; - -namespace MyProject.Blazor.Components -{ - [ExposeServices(typeof(Branding))] - [Dependency(ReplaceServices = true)] - public partial class MyBranding - { - - } -} -```` {{end}} {{if UI == "Blazor"}} - -````csharp using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic; +{{end}} + using Volo.Abp.DependencyInjection; namespace MyProject.Blazor.Components @@ -143,7 +105,6 @@ namespace MyProject.Blazor.Components } } ```` -{{end}} ## Theming From dbd9194c82cd3dd501708020e4bd26d772d0cca5 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 09:47:17 +0300 Subject: [PATCH 26/51] Update theme source-code adding with CLI usage --- docs/en/UI/AspNetCore/Theming.md | 8 ++++++-- docs/en/UI/Blazor/Theming.md | 10 +++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/en/UI/AspNetCore/Theming.md b/docs/en/UI/AspNetCore/Theming.md index 6a378cd29a..fd2e7312de 100644 --- a/docs/en/UI/AspNetCore/Theming.md +++ b/docs/en/UI/AspNetCore/Theming.md @@ -122,9 +122,13 @@ The empty layout provides an empty page. It typically includes the following par ## Implementing a Theme -### The Easy Way +### The Easiest Way -The easiest way to create a new theme is to copy the [Basic Theme Source Code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic) and customize it. Once you get a copy of the theme in your solution, remove the `Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic` NuGet package and reference to the local project. +The easiest way of creating a new theme is adding [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) module with source codes and customizing it. + +```bash +abp add-package Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic --with-source-code --add-to-solution-file +``` ### The ITheme Interface diff --git a/docs/en/UI/Blazor/Theming.md b/docs/en/UI/Blazor/Theming.md index 83c54c652c..1b4a35c2e4 100644 --- a/docs/en/UI/Blazor/Theming.md +++ b/docs/en/UI/Blazor/Theming.md @@ -81,14 +81,18 @@ A theme is simply a Razor Class Library. ### The Easiest Way -The easiest way to create a new theme is copying the [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) and customizing it. +The easiest way to create a new theme is adding [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) module with source codes and customizing it. {{if UI == "Blazor"}} -Once you get a copy of the theme in your solution, remove the `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme` NuGet package and reference to the local project. +```bash +abp add-package Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme --with-source-code --add-to-solution-file +``` {{end}} {{if UI == "BlazorServer"}} -Once you get a copy of the theme in your solution, remove `Volo.Abp.AspNetCore.Components.Server.BasicTheme` and `Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic` NuGet packages and add references to local projects. +```bash +abp add-package Volo.Abp.AspNetCore.Components.Server.BasicTheme --with-source-code --add-to-solution-file +``` {{end}} ### Global Styles / Scripts From 51871de100c80bc149f682fbf2a4380a31e11190 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 10:28:16 +0300 Subject: [PATCH 27/51] Update Theming.md --- docs/en/UI/Blazor/Theming.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Blazor/Theming.md b/docs/en/UI/Blazor/Theming.md index 1b4a35c2e4..c7f92189de 100644 --- a/docs/en/UI/Blazor/Theming.md +++ b/docs/en/UI/Blazor/Theming.md @@ -81,7 +81,7 @@ A theme is simply a Razor Class Library. ### The Easiest Way -The easiest way to create a new theme is adding [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) module with source codes and customizing it. +The easiest way of creating a new theme is adding [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) module with source codes and customizing it. {{if UI == "Blazor"}} ```bash From 26742af89db780bbcde2ec28a13dbf279757de98 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 20 May 2022 18:04:44 +0800 Subject: [PATCH 28/51] Add unit test for the Check --- .../Volo/Abp/Check_Tests.cs | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs new file mode 100644 index 0000000000..58467fabb5 --- /dev/null +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using Shouldly; +using Xunit; + +namespace Volo.Abp; + +public class Check_Tests +{ + [Fact] + public void NotNull_Test() + { + Check.NotNull("test", nameof(NotNull_Test)).ShouldBe("test"); + Check.NotNull(string.Empty, nameof(NotNull_Test)).ShouldBe(string.Empty); + Check.NotNull("test", nameof(NotNull_Test), maxLength: 4, minLength: 0).ShouldBe("test"); + + Assert.Throws(() => Check.NotNull(null, nameof(NotNull_Test))); + Assert.Throws(() => Check.NotNull(null, nameof(NotNull_Test))); + Assert.Throws(() => Check.NotNull("test", nameof(NotNull_Test), maxLength: 3)); + Assert.Throws(() => Check.NotNull("test", nameof(NotNull_Test), minLength: 5)); + } + + [Fact] + public void NotNullOrWhiteSpace_Test() + { + Check.NotNullOrWhiteSpace("test", nameof(NotNullOrWhiteSpace_Test)).ShouldBe("test"); + Check.NotNullOrWhiteSpace("test", nameof(NotNullOrWhiteSpace_Test), maxLength: 4, minLength: 0).ShouldBe("test"); + + Assert.Throws(() => Check.NotNullOrWhiteSpace(null, nameof(NotNullOrWhiteSpace_Test))); + Assert.Throws(() => Check.NotNullOrWhiteSpace(string.Empty, nameof(NotNullOrWhiteSpace_Test))); + Assert.Throws(() => Check.NotNullOrWhiteSpace("test", nameof(NotNullOrWhiteSpace_Test), maxLength: 3)); + Assert.Throws(() => Check.NotNullOrWhiteSpace("test", nameof(NotNullOrWhiteSpace_Test), minLength: 5)); + } + + [Fact] + public void NotNullOrEmpty_Test() + { + Check.NotNullOrEmpty("test", nameof(NotNullOrEmpty_Test)).ShouldBe("test"); + Check.NotNullOrEmpty("test", nameof(NotNullOrEmpty_Test), maxLength: 4, minLength: 0).ShouldBe("test"); + Check.NotNullOrEmpty(new List{"test"}, nameof(NotNullOrEmpty_Test)); + + Assert.Throws(() => Check.NotNullOrEmpty(null, nameof(NotNullOrEmpty_Test))); + Assert.Throws(() => Check.NotNullOrEmpty(string.Empty, nameof(NotNullOrEmpty_Test))); + Assert.Throws(() => Check.NotNullOrEmpty("test", nameof(NotNullOrEmpty_Test), maxLength: 3)); + Assert.Throws(() => Check.NotNullOrEmpty("test", nameof(NotNullOrEmpty_Test), minLength: 5)); + Assert.Throws(() => Check.NotNullOrEmpty(new List(), nameof(NotNullOrEmpty_Test))); + } + + [Fact] + public void AssignableTo_Test() + { + Check.AssignableTo(typeof(string), nameof(AssignableTo_Test)).ShouldBe(typeof(string)); + Check.AssignableTo(typeof(Child), nameof(AssignableTo_Test)).ShouldBe(typeof(Child)); + Check.AssignableTo(typeof(Child2), nameof(AssignableTo_Test)).ShouldBe(typeof(Child2)); + Check.AssignableTo(typeof(Child2), nameof(AssignableTo_Test)).ShouldBe(typeof(Child2)); + + Assert.Throws(() => Check.AssignableTo(typeof(Parent), nameof(AssignableTo_Test))); + Assert.Throws(() => Check.AssignableTo(typeof(Child), nameof(AssignableTo_Test))); + Assert.Throws(() => Check.AssignableTo(typeof(Parent), nameof(AssignableTo_Test))); + } + + [Fact] + public void Length_Test() + { + Check.Length("test", nameof(Length_Test), maxLength: 4).ShouldBe("test"); + Check.Length("test", nameof(Length_Test), maxLength: 5).ShouldBe("test"); + Check.Length("test", nameof(Length_Test), maxLength:4, minLength: 0).ShouldBe("test"); + Check.Length("test", nameof(Length_Test), maxLength:4, minLength: 4).ShouldBe("test"); + + Assert.Throws(() => Check.Length("test", nameof(Length_Test), maxLength: 0)); + Assert.Throws(() => Check.Length("test", nameof(Length_Test), maxLength: 3)); + Assert.Throws(() => Check.Length("test", nameof(Length_Test), maxLength: 4, minLength: 5)); + } + + [Fact] + public void Positive_Test() + { + Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); + Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); + Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); + + Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); + } + + [Fact] + public void Range_Test() + { + Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); + Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); + Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); + + Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + } + + class Parent + { + + } + + class Child: Parent + { + + } + + class Child2: Child + { + + } +} \ No newline at end of file From b7a2189f992bd83fa4de02a278a0fa35c5307af3 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 20 May 2022 18:10:54 +0800 Subject: [PATCH 29/51] Update Check_Tests.cs --- .../Volo/Abp/Check_Tests.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs index 58467fabb5..48a579c820 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs @@ -78,13 +78,22 @@ public class Check_Tests Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); + Check.Positive(Decimal.One, nameof(Positive_Test)).ShouldBe(Decimal.One); + Check.Positive(1.0f, nameof(Positive_Test)).ShouldBe(1.0f); + Check.Positive(1.0, nameof(Positive_Test)).ShouldBe(1.0); Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(Decimal.Zero, nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(0.0f, nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(0.0, nameof(Positive_Test))); Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-Decimal.One, nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.0f, nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.0, nameof(Positive_Test))); } [Fact] @@ -93,13 +102,22 @@ public class Check_Tests Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); + Check.Range(Decimal.One, nameof(Range_Test), minimumValue: Decimal.One, maximumValue: 10.To()).ShouldBe(Decimal.One); + Check.Range(1.0f, nameof(Range_Test), minimumValue: 1.0f, maximumValue: 10.0f).ShouldBe(1.0f); + Check.Range(1.0, nameof(Range_Test), minimumValue: 1.0, maximumValue: 10.0).ShouldBe(1.0); Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(Decimal.Zero, nameof(Range_Test), minimumValue: Decimal.One, maximumValue: 10.To())); + Assert.Throws(() => Check.Range(0.0f, nameof(Range_Test), minimumValue: 1.0f, maximumValue: 10.0f)); + Assert.Throws(() => Check.Range(0.0, nameof(Range_Test), minimumValue: 1.0, maximumValue: 10.0)); Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: Decimal.One, maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.0f, nameof(Range_Test), minimumValue: 1.0f, maximumValue: 10.0f)); + Assert.Throws(() => Check.Range(11.0, nameof(Range_Test), minimumValue: 1.0, maximumValue: 10.0)); } class Parent From ce6c3f1afb657a73142add3c5da29d15327f9301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 20 May 2022 14:15:22 +0300 Subject: [PATCH 30/51] Introduce RemoteServiceConfigurationProviderExtensions. --- ...oteServiceConfigurationProviderExtensions.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProviderExtensions.cs diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProviderExtensions.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProviderExtensions.cs new file mode 100644 index 0000000000..1c6aaac21d --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProviderExtensions.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using JetBrains.Annotations; + +namespace Volo.Abp.Http.Client; + +public static class RemoteServiceConfigurationProviderExtensions +{ + [ItemNotNull] + public static Task GetConfigurationOrDefaultAsync( + this IRemoteServiceConfigurationProvider provider) + => provider.GetConfigurationOrDefaultAsync(RemoteServiceConfigurationDictionary.DefaultName); + + [ItemNotNull] + public static Task GetConfigurationOrDefaultOrNullAsync( + this IRemoteServiceConfigurationProvider provider) + => provider.GetConfigurationOrDefaultOrNullAsync(RemoteServiceConfigurationDictionary.DefaultName); +} \ No newline at end of file From 2e08429cc42369e70750e366b20dbef2d3bd5de8 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 20 May 2022 15:43:30 +0300 Subject: [PATCH 31/51] Cli: Support for nested conditions --- .../Files/FileEntryExtensions.cs | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs index 8543ffb1ac..b5edcd5d54 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs @@ -6,6 +6,8 @@ namespace Volo.Abp.Cli.ProjectBuilding.Files; public static class FileEntryExtensions { + private static int _maximumRecursionCount = 20; + public static FileEntry ReplaceText(this FileEntry file, string oldText, string newText) { file.NormalizeLineEndings(); @@ -20,7 +22,7 @@ public static class FileEntryExtensions public static void RemoveTemplateCodeMarkers(this FileEntry file) { - if (!file.Content.Contains("")) + if (!file.Content.Contains("") ) { return; } @@ -49,9 +51,9 @@ public static class FileEntryExtensions file.SetLines(newLines); } - private static void RemoveMarkedTemplateCode(this FileEntry file, List symbols) + private static void RemoveMarkedTemplateCode(this FileEntry file, List symbols, int recursionCount = 0) { - if (!file.Content.Contains("")) + if (!file.Content.Contains(" _maximumRecursionCount) { return; } @@ -97,9 +99,25 @@ public static class FileEntryExtensions continue; } - while (i < lines.Length && !lines[i].Contains("")) + var innerConditionCount = 0; + + while (i < lines.Length) { - ++i; + i++; + + if (lines[i].Contains("")) + { + if (innerConditionCount < 1) + { + break; + } + + innerConditionCount--; + } } if (lines[i+1].Contains(" Date: Fri, 20 May 2022 17:53:51 +0300 Subject: [PATCH 32/51] Cli: Improve --- .../Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs | 5 +++-- .../Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs index b5edcd5d54..a5085f83a9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs @@ -39,9 +39,9 @@ public static class FileEntryExtensions { //TODO: What if we use inline like: some-code //TODO: This logic skips the code in that case. Should handle it - ++i; + continue; } - + if (i < lines.Length) { newLines.Add(lines[i]); @@ -146,6 +146,7 @@ public static class FileEntryExtensions var condition = marker.Trim() .RemovePreFix("//").Trim() .RemovePreFix("@*").Trim() + .RemovePreFix("#").Trim() .RemovePreFix("