diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoSourceCodeStore.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoSourceCodeStore.cs
index 107dc2d21d..1e11ecb2f9 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoSourceCodeStore.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoSourceCodeStore.cs
@@ -278,7 +278,7 @@ public class AbpIoSourceCodeStore : ISourceCodeStore, ITransientDependency
}
var matches = Regex.Matches(stringBuilder.ToString(),
- $"({AppTemplate.TemplateName}|{AppProTemplate.TemplateName}|{ModuleTemplate.TemplateName}|{ModuleProTemplate.TemplateName}|{ConsoleTemplate.TemplateName}|{WpfTemplate.TemplateName})-(.+).zip");
+ $"({AppTemplate.TemplateName}|{AppNoLayersTemplate.TemplateName}|{AppProTemplate.TemplateName}|{ModuleTemplate.TemplateName}|{ModuleProTemplate.TemplateName}|{ConsoleTemplate.TemplateName}|{WpfTemplate.TemplateName})-(.+).zip");
foreach (Match match in matches)
{
templateList.Add((match.Groups[1].Value, match.Groups[2].Value));
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs
index b1c1674ae0..8e1504fb8f 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs
@@ -52,6 +52,8 @@ public class TemplateInfoProvider : ITemplateInfoProvider, ITransientDependency
{
case AppTemplate.TemplateName:
return new AppTemplate();
+ case AppNoLayersTemplate.TemplateName:
+ return new AppNoLayersTemplate();
case AppProTemplate.TemplateName:
return new AppProTemplate();
case MicroserviceProTemplate.TemplateName:
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs
new file mode 100644
index 0000000000..b409c4e202
--- /dev/null
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs
@@ -0,0 +1,29 @@
+using System.Collections.Generic;
+using Volo.Abp.Cli.ProjectBuilding.Building;
+
+namespace Volo.Abp.Cli.ProjectBuilding.Templates.App;
+
+public class AppNoLayersTemplate : AppTemplateBase
+{
+ ///
+ /// "app-nolayers".
+ ///
+ public const string TemplateName = "app-nolayers";
+
+ public AppNoLayersTemplate()
+ : base(TemplateName)
+ {
+ //TODO: Change URL
+ DocumentUrl = CliConsts.DocsLink + "/en/abp/latest/Startup-Templates/Application";
+ }
+
+ public override IEnumerable GetCustomSteps(ProjectBuildContext context)
+ {
+ var steps = new List();
+
+ RandomizeSslPorts(context, steps);
+ RandomizeStringEncryption(context, steps);
+
+ return steps;
+ }
+}
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 7ce9730e23..7d4aab5615 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
@@ -43,7 +43,7 @@ public abstract class AppTemplateBase : TemplateInfo
return steps;
}
- private void ConfigureTenantSchema(ProjectBuildContext context, List steps)
+ protected void ConfigureTenantSchema(ProjectBuildContext context, List steps)
{
if (context.BuildArgs.ExtraProperties.ContainsKey("separate-tenant-schema"))
{
@@ -71,7 +71,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private void SwitchDatabaseProvider(ProjectBuildContext context, List steps)
+ protected void SwitchDatabaseProvider(ProjectBuildContext context, List steps)
{
if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb)
{
@@ -105,7 +105,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private static void DeleteUnrelatedProjects(ProjectBuildContext context, List steps)
+ protected void DeleteUnrelatedProjects(ProjectBuildContext context, List steps)
{
switch (context.BuildArgs.UiFramework)
{
@@ -170,7 +170,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private void ConfigurePublicWebSite(ProjectBuildContext context, List steps)
+ protected void ConfigurePublicWebSite(ProjectBuildContext context, List steps)
{
if (!context.BuildArgs.PublicWebSite)
{
@@ -206,7 +206,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private static void RemoveCmsKitDependenciesFromPackageJsonFiles(List steps)
+ protected static void RemoveCmsKitDependenciesFromPackageJsonFiles(List steps)
{
var adminCmsPackageInstalledProjectsPackageJsonFiles = new List
{
@@ -233,7 +233,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private bool IsCmsKitSupportedForTargetVersion(ProjectBuildContext context)
+ protected bool IsCmsKitSupportedForTargetVersion(ProjectBuildContext context)
{
if (string.IsNullOrWhiteSpace(context.BuildArgs.Version))
{
@@ -243,7 +243,7 @@ public abstract class AppTemplateBase : TemplateInfo
return SemanticVersion.Parse(context.BuildArgs.Version) > SemanticVersion.Parse("4.2.9");
}
- private static void ConfigureWithoutUi(ProjectBuildContext context, List steps)
+ protected void ConfigureWithoutUi(ProjectBuildContext context, List steps)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host"));
@@ -263,7 +263,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private static void ConfigureWithBlazorUi(ProjectBuildContext context, List steps)
+ protected void ConfigureWithBlazorUi(ProjectBuildContext context, List steps)
{
context.Symbols.Add("ui:blazor");
@@ -286,7 +286,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private static void ConfigureWithBlazorServerUi(ProjectBuildContext context, List steps)
+ protected void ConfigureWithBlazorServerUi(ProjectBuildContext context, List steps)
{
context.Symbols.Add("ui:blazor-server");
@@ -312,7 +312,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private static void ConfigureWithMvcUi(ProjectBuildContext context, List steps)
+ protected void ConfigureWithMvcUi(ProjectBuildContext context, List steps)
{
context.Symbols.Add("ui:mvc");
@@ -334,7 +334,7 @@ public abstract class AppTemplateBase : TemplateInfo
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds"));
}
- private static void ConfigureWithAngularUi(ProjectBuildContext context, List steps)
+ protected void ConfigureWithAngularUi(ProjectBuildContext context, List steps)
{
context.Symbols.Add("ui:angular");
@@ -362,12 +362,12 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private static void RemoveUnnecessaryPorts(ProjectBuildContext context, List steps)
+ protected void RemoveUnnecessaryPorts(ProjectBuildContext context, List steps)
{
steps.Add(new RemoveUnnecessaryPortsStep());
}
- private static void RandomizeSslPorts(ProjectBuildContext context, List steps)
+ protected void RandomizeSslPorts(ProjectBuildContext context, List steps)
{
if (context.BuildArgs.ExtraProperties.ContainsKey("no-random-port"))
{
@@ -388,7 +388,7 @@ public abstract class AppTemplateBase : TemplateInfo
);
}
- private void ConfigureTieredArchitecture(ProjectBuildContext context, List steps)
+ protected void ConfigureTieredArchitecture(ProjectBuildContext context, List steps)
{
if (context.BuildArgs.ExtraProperties.ContainsKey(NewCommand.Options.Tiered.Long) ||
context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server"))
@@ -397,17 +397,17 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private static void RandomizeStringEncryption(ProjectBuildContext context, List steps)
+ protected void RandomizeStringEncryption(ProjectBuildContext context, List steps)
{
steps.Add(new RandomizeStringEncryptionStep());
}
- private static void UpdateNuGetConfig(ProjectBuildContext context, List steps)
+ protected void UpdateNuGetConfig(ProjectBuildContext context, List steps)
{
steps.Add(new UpdateNuGetConfigStep("/aspnet-core/NuGet.Config"));
}
- private void RemoveMigrations(ProjectBuildContext context, List steps)
+ protected void RemoveMigrations(ProjectBuildContext context, List steps)
{
if (string.IsNullOrWhiteSpace(context.BuildArgs.Version) ||
SemanticVersion.Parse(context.BuildArgs.Version) > new SemanticVersion(4, 1, 99))
@@ -425,7 +425,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private static void ChangeConnectionString(ProjectBuildContext context, List steps)
+ protected void ChangeConnectionString(ProjectBuildContext context, List steps)
{
if (context.BuildArgs.ConnectionString != null)
{
@@ -433,7 +433,7 @@ public abstract class AppTemplateBase : TemplateInfo
}
}
- private static void CleanupFolderHierarchy(ProjectBuildContext context, List steps)
+ protected void CleanupFolderHierarchy(ProjectBuildContext context, List steps)
{
if ((context.BuildArgs.UiFramework == UiFramework.Mvc
|| context.BuildArgs.UiFramework == UiFramework.Blazor
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Data/DataSeederMiddleware.cs b/templates/app-nolayers/MyCompanyName.MyProjectName/Data/DataSeederMiddleware.cs
index 1f909094fb..eede958c44 100644
--- a/templates/app-nolayers/MyCompanyName.MyProjectName/Data/DataSeederMiddleware.cs
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Data/DataSeederMiddleware.cs
@@ -2,46 +2,47 @@
using Volo.Abp.DependencyInjection;
using Volo.Abp.Identity;
-namespace MyCompanyName.MyProjectName.Data
+namespace MyCompanyName.MyProjectName.Data;
+
+public class DataSeederMiddleware : IMiddleware, ISingletonDependency
{
- public class DataSeederMiddleware : IMiddleware, ISingletonDependency
- {
- private bool _hostSeeded;
+ private bool _hostSeeded;
- private readonly ILogger _logger;
- private readonly IDataSeeder _dataSeeder;
+ private readonly ILogger _logger;
+ private readonly IDataSeeder _dataSeeder;
- public DataSeederMiddleware(
- ILogger logger,
- IDataSeeder dataSeeder)
- {
- _logger = logger;
- _dataSeeder = dataSeeder;
- }
+ public DataSeederMiddleware(
+ ILogger logger,
+ IDataSeeder dataSeeder)
+ {
+ _logger = logger;
+ _dataSeeder = dataSeeder;
+ }
- public async Task InvokeAsync(HttpContext context, RequestDelegate next)
+ public async Task InvokeAsync(HttpContext context, RequestDelegate next)
+ {
+ /* This logic is not safe if you are running multiple instances of your
+ * application in parallel. In that case, a distributed lock usage is suggested,
+ * or you can create another application for database migration/seed.
+ */
+ if (!_hostSeeded)
{
- /* This logic is not safe if you are running multiple instances of your
- * application in parallel. In that case, a distributed lock usage is suggested,
- * or you can create another application for database migration/seed.
- */
- if (!_hostSeeded)
- {
- await SeedHostDataAsync();
- _hostSeeded = true;
- }
-
- await next(context);
+ await SeedHostDataAsync();
+ _hostSeeded = true;
}
- private Task SeedHostDataAsync()
- {
- _logger.LogInformation($"Executing database seed...");
-
- return _dataSeeder.SeedAsync(new DataSeedContext()
- .WithProperty(IdentityDataSeedContributor.AdminEmailPropertyName, IdentityDataSeedContributor.AdminEmailDefaultValue)
- .WithProperty(IdentityDataSeedContributor.AdminPasswordPropertyName, IdentityDataSeedContributor.AdminPasswordDefaultValue)
- );
- }
+ await next(context);
+ }
+
+ private Task SeedHostDataAsync()
+ {
+ _logger.LogInformation($"Executing database seed...");
+
+ return _dataSeeder.SeedAsync(new DataSeedContext()
+ .WithProperty(IdentityDataSeedContributor.AdminEmailPropertyName,
+ IdentityDataSeedContributor.AdminEmailDefaultValue)
+ .WithProperty(IdentityDataSeedContributor.AdminPasswordPropertyName,
+ IdentityDataSeedContributor.AdminPasswordDefaultValue)
+ );
}
}
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Data/MyProjectNameDbContext.cs b/templates/app-nolayers/MyCompanyName.MyProjectName/Data/MyProjectNameDbContext.cs
index 37fe8eda88..6265e8ebba 100644
--- a/templates/app-nolayers/MyCompanyName.MyProjectName/Data/MyProjectNameDbContext.cs
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Data/MyProjectNameDbContext.cs
@@ -1,7 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.AuditLogging.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
-using Volo.Abp.EntityFrameworkCore.Modeling;
using Volo.Abp.FeatureManagement.EntityFrameworkCore;
using Volo.Abp.Identity.EntityFrameworkCore;
using Volo.Abp.IdentityServer.EntityFrameworkCore;
@@ -31,7 +30,7 @@ public class MyProjectNameDbContext : AbpDbContext
builder.ConfigureIdentityServer();
builder.ConfigureFeatureManagement();
builder.ConfigureTenantManagement();
-
+
/* Configure your own entities here */
}
-}
\ No newline at end of file
+}
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/ar.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/ar.json
new file mode 100644
index 0000000000..9fe7e951d9
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/ar.json
@@ -0,0 +1,7 @@
+{
+ "culture": "ar",
+ "texts": {
+ "Welcome_Title": "مرحبا",
+ "Welcome_Text": "هذا هو قالب بدء تشغيل تطبيق ذو طبقة واحدة مبسط لإطار عمل ABP."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/cs.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/cs.json
new file mode 100644
index 0000000000..d45dfff9a0
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/cs.json
@@ -0,0 +1,7 @@
+{
+ "culture": "cs",
+ "texts": {
+ "Welcome_Title": "Vítejte",
+ "Welcome_Text": "Toto je minimalistická šablona pro spuštění aplikace s jednou vrstvou pro ABP Framework."
+ }
+}
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/de-DE.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/de-DE.json
new file mode 100644
index 0000000000..e325aa3949
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/de-DE.json
@@ -0,0 +1,7 @@
+{
+ "culture": "de-DE",
+ "texts": {
+ "Welcome_Title": "Willkommen",
+ "Welcome_Text": "Dies ist eine minimalistische, einschichtige Anwendungsstartvorlage für das ABP-Framework."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/en-GB.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/en-GB.json
new file mode 100644
index 0000000000..30407ce214
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/en-GB.json
@@ -0,0 +1,7 @@
+{
+ "culture": "en-GB",
+ "texts": {
+ "Welcome_Title": "Welcome_Title",
+ "Welcome_Text": "This is a minimalist, single layer application startup template for the ABP Framework."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/es.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/es.json
new file mode 100644
index 0000000000..dbc2280cdc
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/es.json
@@ -0,0 +1,7 @@
+{
+ "culture": "es",
+ "texts": {
+ "Welcome_Title": "Bienvenido",
+ "Welcome_Text": "Esta es una plantilla de inicio de aplicación minimalista de una sola capa para ABP Framework."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/fi.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/fi.json
new file mode 100644
index 0000000000..96f8386846
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/fi.json
@@ -0,0 +1,7 @@
+{
+ "culture": "fi",
+ "texts": {
+ "Welcome_Title": "Tervetuloa",
+ "Welcome_Text": "Tämä on minimalistinen yksikerroksinen sovelluksen käynnistysmalli ABP Frameworkille."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/fr.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/fr.json
new file mode 100644
index 0000000000..6148d1fa13
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/fr.json
@@ -0,0 +1,7 @@
+{
+ "culture": "fr",
+ "texts": {
+ "Welcome_Title": "Bienvenue",
+ "Welcome_Text": "Il s'agit d'un modèle de démarrage d'application minimaliste à une seule couche pour le cadre ABP."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/hi.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/hi.json
new file mode 100644
index 0000000000..c741e93703
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/hi.json
@@ -0,0 +1,7 @@
+{
+ "culture": "hi",
+ "texts": {
+ "Welcome_Title": "स्वागत हे",
+ "Welcome_Text": "यह एबीपी फ्रेमवर्क के लिए एक न्यूनतम, सिंगल लेयर एप्लिकेशन स्टार्टअप टेम्प्लेट है।"
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/hu.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/hu.json
new file mode 100644
index 0000000000..cf9f2e7b09
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/hu.json
@@ -0,0 +1,7 @@
+{
+ "culture": "hu",
+ "texts": {
+ "Welcome_Title": "Üdvözlöm",
+ "Welcome_Text": "Ez egy minimalista, egyrétegű alkalmazásindítási sablon az ABP-keretrendszerhez."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/is.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/is.json
new file mode 100644
index 0000000000..41b8ed6afb
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/is.json
@@ -0,0 +1,7 @@
+{
+ "culture": "is",
+ "texts": {
+ "Welcome_Title": "Velkomin",
+ "Welcome_Text": "Þetta er lægstur, eins lags ræsingarsniðmát fyrir ABP Framework."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/it.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/it.json
new file mode 100644
index 0000000000..8722bc73c1
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/it.json
@@ -0,0 +1,7 @@
+{
+ "culture": "it",
+ "texts": {
+ "Welcome_Title": "Benvenuto",
+ "Welcome_Text": "Questo è un modello di avvio dell'applicazione minimalista a livello singolo per ABP Framework."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/nl.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/nl.json
new file mode 100644
index 0000000000..e798081c42
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/nl.json
@@ -0,0 +1,7 @@
+{
+ "culture": "nl",
+ "texts": {
+ "Welcome_Title": "Welkom",
+ "Welcome_Text": "Dit is een minimalistische, enkellaagse applicatie-opstartsjabloon voor het ABP Framework."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/pl-PL.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/pl-PL.json
new file mode 100644
index 0000000000..ba7c3764ee
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/pl-PL.json
@@ -0,0 +1,7 @@
+{
+ "culture": "pl-PL",
+ "texts": {
+ "Welcome_Title": "Witaj",
+ "Welcome_Text": "Jest to minimalistyczny, jednowarstwowy szablon uruchamiania aplikacji dla ABP Framework."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/pt-BR.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/pt-BR.json
new file mode 100644
index 0000000000..1e45a233c9
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/pt-BR.json
@@ -0,0 +1,7 @@
+{
+ "culture": "pt-BR",
+ "texts": {
+ "Welcome_Title": "Seja bem-vindo!",
+ "Welcome_Text": "Este é um modelo de inicialização de aplicativo de camada única minimalista para o ABP Framework."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/ro-RO.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/ro-RO.json
new file mode 100644
index 0000000000..bd31e2cbd6
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/ro-RO.json
@@ -0,0 +1,7 @@
+{
+ "culture": "ro-RO",
+ "texts": {
+ "Welcome_Title": "Bun venit",
+ "Welcome_Text": "Acesta este un șablon de pornire a aplicației minimaliste, cu un singur strat, pentru Cadrul ABP."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/ru.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/ru.json
new file mode 100644
index 0000000000..82ed95eaf8
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/ru.json
@@ -0,0 +1,7 @@
+{
+ "culture": "ru",
+ "texts": {
+ "Welcome_Title": "Bine ati venit",
+ "Welcome_Text": "Acesta este un șablon de pornire a aplicației minimaliste, cu un singur strat, pentru Cadrul ABP."
+ }
+}
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/sk.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/sk.json
new file mode 100644
index 0000000000..cdaf8e7c3d
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/sk.json
@@ -0,0 +1,7 @@
+{
+ "culture": "sk",
+ "texts": {
+ "Welcome_Title": "Vitajte",
+ "Welcome_Text": "Toto je minimalistická šablóna na spustenie aplikácie s jednou vrstvou pre rámec ABP."
+ }
+}
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/sl.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/sl.json
new file mode 100644
index 0000000000..5d595a4910
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/sl.json
@@ -0,0 +1,7 @@
+{
+ "culture": "sl",
+ "texts": {
+ "Welcome_Title": "Dobrodošli",
+ "Welcome_Text": "To je minimalistična enoslojna predloga za zagon aplikacije za ABP Framework."
+ }
+}
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/vi.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/vi.json
new file mode 100644
index 0000000000..9e61a67f6c
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/vi.json
@@ -0,0 +1,7 @@
+{
+ "culture": "vi",
+ "texts": {
+ "Welcome_Title": "Chào mừng bạn",
+ "Welcome_Text": "Đây là một mẫu khởi động ứng dụng lớp đơn, tối giản cho ABP Framework."
+ }
+}
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/zh-Hans.json
new file mode 100644
index 0000000000..c0dcb66f0a
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/zh-Hans.json
@@ -0,0 +1,7 @@
+{
+ "culture": "zh-Hans",
+ "texts": {
+ "Welcome_Title": "欢迎",
+ "Welcome_Text": "这是ABP框架的极简单层应用程序启动模板."
+ }
+ }
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/zh-Hant.json b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/zh-Hant.json
new file mode 100644
index 0000000000..fe347fedb9
--- /dev/null
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Localization/MyProjectName/zh-Hant.json
@@ -0,0 +1,7 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "Welcome_Title": "歡迎",
+ "Welcome_Text": "這是 ABP 框架的極簡單層應用程序啟動模板."
+ }
+ }
\ No newline at end of file
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220116184845_Initial.Designer.cs b/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220119015238_Initial.Designer.cs
similarity index 99%
rename from templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220116184845_Initial.Designer.cs
rename to templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220119015238_Initial.Designer.cs
index 9a08b50fb6..606c549e29 100644
--- a/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220116184845_Initial.Designer.cs
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220119015238_Initial.Designer.cs
@@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(MyProjectNameDbContext))]
- [Migration("20220116184845_Initial")]
+ [Migration("20220119015238_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -100,16 +100,28 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("ImpersonatorTenantId");
+ b.Property("ImpersonatorTenantName")
+ .HasMaxLength(64)
+ .HasColumnType("nvarchar(64)")
+ .HasColumnName("ImpersonatorTenantName");
+
b.Property("ImpersonatorUserId")
.HasColumnType("uniqueidentifier")
.HasColumnName("ImpersonatorUserId");
+ b.Property("ImpersonatorUserName")
+ .HasMaxLength(256)
+ .HasColumnType("nvarchar(256)")
+ .HasColumnName("ImpersonatorUserName");
+
b.Property("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property("TenantName")
- .HasColumnType("nvarchar(max)");
+ .HasMaxLength(64)
+ .HasColumnType("nvarchar(64)")
+ .HasColumnName("TenantName");
b.Property("Url")
.HasMaxLength(256)
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220116184845_Initial.cs b/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220119015238_Initial.cs
similarity index 99%
rename from templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220116184845_Initial.cs
rename to templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220119015238_Initial.cs
index abec77f8c4..61dd143293 100644
--- a/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220116184845_Initial.cs
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/20220119015238_Initial.cs
@@ -18,9 +18,11 @@ namespace MyCompanyName.MyProjectName.Migrations
UserId = table.Column(type: "uniqueidentifier", nullable: true),
UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true),
TenantId = table.Column(type: "uniqueidentifier", nullable: true),
- TenantName = table.Column(type: "nvarchar(max)", nullable: true),
+ TenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
ImpersonatorUserId = table.Column(type: "uniqueidentifier", nullable: true),
+ ImpersonatorUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true),
ImpersonatorTenantId = table.Column(type: "uniqueidentifier", nullable: true),
+ ImpersonatorTenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
ExecutionTime = table.Column(type: "datetime2", nullable: false),
ExecutionDuration = table.Column(type: "int", nullable: false),
ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/MyProjectNameDbContextModelSnapshot.cs
index 49e87cea80..af4ba29c12 100644
--- a/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/MyProjectNameDbContextModelSnapshot.cs
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Migrations/MyProjectNameDbContextModelSnapshot.cs
@@ -98,16 +98,28 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("ImpersonatorTenantId");
+ b.Property("ImpersonatorTenantName")
+ .HasMaxLength(64)
+ .HasColumnType("nvarchar(64)")
+ .HasColumnName("ImpersonatorTenantName");
+
b.Property("ImpersonatorUserId")
.HasColumnType("uniqueidentifier")
.HasColumnName("ImpersonatorUserId");
+ b.Property("ImpersonatorUserName")
+ .HasMaxLength(256)
+ .HasColumnType("nvarchar(256)")
+ .HasColumnName("ImpersonatorUserName");
+
b.Property("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property("TenantName")
- .HasColumnType("nvarchar(max)");
+ .HasMaxLength(64)
+ .HasColumnType("nvarchar(64)")
+ .HasColumnName("TenantName");
b.Property("Url")
.HasMaxLength(256)
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/app-nolayers/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj
index 7bc10614ab..da71f5a49f 100644
--- a/templates/app-nolayers/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj
@@ -10,72 +10,72 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
+
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
runtime; build; native; contentfiles; analyzers
compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native
@@ -85,7 +85,7 @@
-
+
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/MyProjectNameModule.cs b/templates/app-nolayers/MyCompanyName.MyProjectName/MyProjectNameModule.cs
index 8df496e37f..f9bc05c940 100644
--- a/templates/app-nolayers/MyCompanyName.MyProjectName/MyProjectNameModule.cs
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/MyProjectNameModule.cs
@@ -53,39 +53,39 @@ namespace MyCompanyName.MyProjectName;
typeof(AbpAspNetCoreAuthenticationJwtBearerModule),
typeof(AbpAspNetCoreSerilogModule),
typeof(AbpAspNetCoreMvcUiBasicThemeModule),
-
+
// Account module packages
typeof(AbpAccountApplicationModule),
typeof(AbpAccountHttpApiModule),
typeof(AbpAccountWebIdentityServerModule),
-
+
// Identity module packages
typeof(AbpIdentityApplicationModule),
typeof(AbpIdentityHttpApiModule),
typeof(AbpIdentityEntityFrameworkCoreModule),
typeof(AbpIdentityServerEntityFrameworkCoreModule),
typeof(AbpIdentityWebModule),
-
+
// Audit logging module packages
typeof(AbpAuditLoggingEntityFrameworkCoreModule),
-
+
// Permission Management module packages
typeof(AbpPermissionManagementApplicationModule),
typeof(AbpPermissionManagementHttpApiModule),
typeof(AbpPermissionManagementEntityFrameworkCoreModule),
-
+
// Tenant Management module packages
typeof(AbpTenantManagementApplicationModule),
typeof(AbpTenantManagementHttpApiModule),
typeof(AbpTenantManagementEntityFrameworkCoreModule),
typeof(AbpTenantManagementWebModule),
-
+
// Feature Management module packages
typeof(AbpFeatureManagementApplicationModule),
typeof(AbpFeatureManagementEntityFrameworkCoreModule),
typeof(AbpFeatureManagementHttpApiModule),
typeof(AbpFeatureManagementWebModule),
-
+
// Setting Management module packages
typeof(AbpSettingManagementApplicationModule),
typeof(AbpSettingManagementEntityFrameworkCoreModule),
@@ -96,7 +96,7 @@ public class MyProjectNameModule : AbpModule
{
/* Single point to enable/disable multi-tenancy */
private const bool IsMultiTenant = true;
-
+
public override void PreConfigureServices(ServiceConfigurationContext context)
{
context.Services.PreConfigure(options =>
@@ -154,7 +154,7 @@ public class MyProjectNameModule : AbpModule
);
});
}
-
+
private void ConfigureAuthentication(IServiceCollection services, IConfiguration configuration)
{
services.AddAuthentication()
@@ -176,9 +176,26 @@ public class MyProjectNameModule : AbpModule
.AddVirtualJson("/Localization/MyProjectName");
options.DefaultResourceType = typeof(MyProjectNameResource);
-
+
options.Languages.Add(new LanguageInfo("en", "en", "English"));
options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
+ options.Languages.Add(new LanguageInfo("ar", "ar", "العربية"));
+ options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
+ options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (UK)"));
+ options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar"));
+ options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish"));
+ options.Languages.Add(new LanguageInfo("fr", "fr", "Français"));
+ options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi", "in"));
+ options.Languages.Add(new LanguageInfo("is", "is", "Icelandic", "is"));
+ options.Languages.Add(new LanguageInfo("it", "it", "Italiano", "it"));
+ options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português"));
+ options.Languages.Add(new LanguageInfo("ro-RO", "ro-RO", "Română"));
+ options.Languages.Add(new LanguageInfo("ru", "ru", "Русский"));
+ options.Languages.Add(new LanguageInfo("sk", "sk", "Slovak"));
+ options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
+ options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文"));
+ options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch", "de"));
+ options.Languages.Add(new LanguageInfo("es", "es", "Español"));
});
Configure(options =>
@@ -242,7 +259,7 @@ public class MyProjectNameModule : AbpModule
*/
options.AddDefaultRepositories(includeAllEntities: true);
});
-
+
Configure(options =>
{
options.Configure(configurationContext =>
@@ -275,24 +292,24 @@ public class MyProjectNameModule : AbpModule
app.UseRouting();
app.UseAuthentication();
app.UseJwtTokenMiddleware();
-
+
if (IsMultiTenant)
{
app.UseMultiTenancy();
}
-
+
app.UseUnitOfWork();
app.UseIdentityServer();
app.UseAuthorization();
-
+
app.UseSwagger();
app.UseAbpSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "MyProjectName API");
});
-
+
app.UseAuditing();
app.UseAbpSerilogEnrichers();
app.UseConfiguredEndpoints();
}
-}
\ No newline at end of file
+}
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Program.cs b/templates/app-nolayers/MyCompanyName.MyProjectName/Program.cs
index 9983a19631..87d4d61515 100644
--- a/templates/app-nolayers/MyCompanyName.MyProjectName/Program.cs
+++ b/templates/app-nolayers/MyCompanyName.MyProjectName/Program.cs
@@ -5,32 +5,45 @@ namespace MyCompanyName.MyProjectName;
public class Program
{
- public static int Main(string[] args)
+ public async static Task Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
#if DEBUG
- .MinimumLevel.Debug()
+ .MinimumLevel.Debug()
#else
- .MinimumLevel.Information()
+ .MinimumLevel.Information()
#endif
- .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
- .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
- .Enrich.FromLogContext()
- .WriteTo.Async(c => c.File("Logs/logs.txt"))
+ .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
+ .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
+ .Enrich.FromLogContext()
+ .WriteTo.Async(c => c.File("Logs/logs.txt"))
#if DEBUG
- .WriteTo.Async(c => c.Console())
+ .WriteTo.Async(c => c.Console())
#endif
- .CreateLogger();
+ .CreateLogger();
try
{
- Log.Information("Starting web host.");
- CreateHostBuilder(args).Build().Run();
+ var builder = WebApplication.CreateBuilder(args);
+ builder.Host.AddAppSettingsSecretsJson()
+ .UseAutofac()
+ .UseSerilog();
+ await builder.AddApplicationAsync();
+ var app = builder.Build();
+ await app.InitializeApplicationAsync();
+
+ Log.Information("Starting MyCompanyName.MyProjectName.");
+ await app.RunAsync();
return 0;
}
catch (Exception ex)
{
- Log.Fatal(ex, "Host terminated unexpectedly!");
+ if (ex.GetType().Name.Equals("StopTheHostException", StringComparison.Ordinal))
+ {
+ throw;
+ }
+
+ Log.Fatal(ex, "MyCompanyName.MyProjectName terminated unexpectedly!");
return 1;
}
finally
@@ -38,14 +51,4 @@ public class Program
Log.CloseAndFlush();
}
}
-
- internal static IHostBuilder CreateHostBuilder(string[] args) =>
- Host.CreateDefaultBuilder(args)
- .AddAppSettingsSecretsJson()
- .ConfigureWebHostDefaults(webBuilder =>
- {
- webBuilder.UseStartup();
- })
- .UseAutofac()
- .UseSerilog();
-}
\ No newline at end of file
+}
diff --git a/templates/app-nolayers/MyCompanyName.MyProjectName/Startup.cs b/templates/app-nolayers/MyCompanyName.MyProjectName/Startup.cs
deleted file mode 100644
index f767d6482d..0000000000
--- a/templates/app-nolayers/MyCompanyName.MyProjectName/Startup.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace MyCompanyName.MyProjectName;
-
-public class Startup
-{
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddApplication();
- }
-
- public void Configure(IApplicationBuilder app)
- {
- app.InitializeApplication();
- }
-}
\ No newline at end of file