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 459d95089a..07a488123c 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
@@ -15,6 +15,8 @@
+
+
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs
index e56c95ff27..555fe14ca4 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs
@@ -1,4 +1,5 @@
-using Volo.Abp.Domain;
+using System.Text;
+using Volo.Abp.Domain;
using Volo.Abp.Json;
using Volo.Abp.Modularity;
@@ -10,6 +11,9 @@ namespace Volo.Abp.Cli
)]
public class AbpCliCoreModule : AbpModule
{
-
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
+ }
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/MainHelpCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/MainHelpCommand.cs
index d06dcade91..96f7132934 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/MainHelpCommand.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/MainHelpCommand.cs
@@ -5,7 +5,7 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Cli.Commands
{
- public class MainHelpCommand : ITransientDependency
+ public class MainHelpCommand : IConsoleCommand, ITransientDependency
{
public Task ExecuteAsync(CommandLineArgs commandLineArgs)
{
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewProjectCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewProjectCommand.cs
index b662bec85b..8addefbdde 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewProjectCommand.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewProjectCommand.cs
@@ -7,7 +7,6 @@ using Volo.Abp.DependencyInjection;
using Volo.Abp.ProjectBuilding;
using Volo.Abp.SolutionTemplating;
using Volo.Abp.SolutionTemplating.Building;
-using Volo.Abp.SolutionTemplating.Zipping;
namespace Volo.Abp.Cli.Commands
{
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs
index 5ca1a0ad99..34284ffafb 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuildArgs.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.ProjectBuilding
[CanBeNull]
public string TemplateName { get; set; }
- public DatabaseProvider DatabaseProvider { get; }
+ public DatabaseProvider DatabaseProvider { get; set; }
public ProjectBuildArgs(
[NotNull] SolutionName solutionName,
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs
index ee13db6e3f..cc0f91940b 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/ProjectBuilder.cs
@@ -23,6 +23,16 @@ namespace Volo.Abp.ProjectBuilding
var templateInfo = GetTemplateInfo(args);
+ args.TemplateName = templateInfo.Name;
+
+ if (args.DatabaseProvider == DatabaseProvider.NotSpecified)
+ {
+ if (templateInfo.DefaultDatabaseProvider != DatabaseProvider.NotSpecified)
+ {
+ args.DatabaseProvider = templateInfo.DefaultDatabaseProvider;
+ }
+ }
+
var templateFile = await TemplateStore.GetAsync(args.TemplateName, version);
var context = new ProjectBuildContext(
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs
index d65937eab2..bfc5aec303 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/TemplateInfoProvider.cs
@@ -9,40 +9,22 @@ namespace Volo.Abp.ProjectBuilding
{
public TemplateInfo GetDefault()
{
- return Get(TemplateNames.Mvc);
+ return Get(MvcApplicationTemplate.TemplateName);
}
public TemplateInfo Get(string name)
{
switch (name)
{
- case TemplateNames.Mvc:
+ case MvcApplicationTemplate.TemplateName:
return new MvcApplicationTemplate();
- case TemplateNames.MvcModule:
+ case MvcModuleTemplate.TemplateName:
return new MvcModuleTemplate();
- case TemplateNames.Service:
+ case ServiceTemplate.TemplateName:
return new ServiceTemplate();
default:
throw new Exception("There is no template found with given name: " + name);
}
}
-
- public static class TemplateNames
- {
- ///
- /// "mvc".
- ///
- public const string Mvc = "mvc";
-
- ///
- /// "mvcmodule".
- ///
- public const string MvcModule = "mvcmodule";
-
- ///
- /// "service".
- ///
- public const string Service = "service";
- }
}
}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcApplicationTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcApplicationTemplate.cs
index 7fe2fd7a0a..3b8dd55f54 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcApplicationTemplate.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcApplicationTemplate.cs
@@ -6,6 +6,16 @@ namespace Volo.Abp.ProjectBuilding.Templates
{
public class MvcApplicationTemplate : TemplateInfo
{
+ ///
+ /// "mvc".
+ ///
+ public const string TemplateName = "mvc";
+
+ public MvcApplicationTemplate()
+ : base(TemplateName, DatabaseProvider.EntityFrameworkCore)
+ {
+ }
+
public override IEnumerable GetCustomSteps(ProjectBuildContext context)
{
var steps = new List();
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcModuleTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcModuleTemplate.cs
index 6549ce103c..a4f436932b 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcModuleTemplate.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/MvcModuleTemplate.cs
@@ -4,6 +4,15 @@ namespace Volo.Abp.ProjectBuilding.Templates
{
public class MvcModuleTemplate : TemplateInfo
{
-
+ ///
+ /// "mvcmodule".
+ ///
+ public const string TemplateName = "mvcmodule";
+
+ public MvcModuleTemplate()
+ : base(TemplateName)
+ {
+
+ }
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/ServiceTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/ServiceTemplate.cs
index 7558891d34..ebbd9fa90a 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/ServiceTemplate.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectBuilding/Templates/ServiceTemplate.cs
@@ -4,6 +4,15 @@ namespace Volo.Abp.ProjectBuilding.Templates
{
public class ServiceTemplate : TemplateInfo
{
+ ///
+ /// "service".
+ ///
+ public const string TemplateName = "service";
+ public ServiceTemplate()
+ : base(TemplateName)
+ {
+
+ }
}
}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/Steps/FileEntryListReadStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/Steps/FileEntryListReadStep.cs
index d1433725ec..794f169a26 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/Steps/FileEntryListReadStep.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/Steps/FileEntryListReadStep.cs
@@ -9,16 +9,16 @@ namespace Volo.Abp.SolutionTemplating.Building.Steps
{
public override void Execute(ProjectBuildContext context)
{
- context.Files = GetEntriesFromZipFile(context.Template.FilePath);
+ context.Files = GetEntriesFromZipFile(context.TemplateFile.FileBytes);
}
- private static FileEntryList GetEntriesFromZipFile(string filePath, string rootFolder = null)
+ private static FileEntryList GetEntriesFromZipFile(byte[] fileBytes)
{
- using (var templateFileStream = File.OpenRead(filePath))
+ using (var memoryStream = new MemoryStream(fileBytes))
{
- using (var templateZipFile = ZipFile.Read(templateFileStream))
+ using (var templateZipFile = ZipFile.Read(memoryStream))
{
- return templateZipFile.ToFileEntryList(rootFolder);
+ return templateZipFile.ToFileEntryList();
}
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs
index 1756402664..0ef7d26a4f 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/SolutionTemplating/Building/TemplateInfo.cs
@@ -1,11 +1,22 @@
using System;
using System.Collections.Generic;
+using JetBrains.Annotations;
namespace Volo.Abp.SolutionTemplating.Building
{
public abstract class TemplateInfo
{
- public string FilePath { get; set; }
+ public string Name { get; }
+
+ public DatabaseProvider DefaultDatabaseProvider { get; }
+
+ protected TemplateInfo(
+ [NotNull] string name,
+ DatabaseProvider defaultDatabaseProvider = DatabaseProvider.NotSpecified)
+ {
+ Name = Check.NotNullOrWhiteSpace(name, nameof(name));
+ DefaultDatabaseProvider = Check.NotNull(defaultDatabaseProvider, nameof(defaultDatabaseProvider));
+ }
public virtual IEnumerable GetCustomSteps(ProjectBuildContext context)
{
diff --git a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj
index f2f9424512..9cdc913391 100644
--- a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj
+++ b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj
@@ -10,6 +10,10 @@
+
+
+
+