1026 changed files with 869 additions and 1367 deletions
File diff suppressed because it is too large
@ -0,0 +1,22 @@ |
|||
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00 |
|||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.Cli.Core", "frameworks\src\Lion.AbpPro.Cli.Core\Lion.AbpPro.Cli.Core.csproj", "{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}" |
|||
EndProject |
|||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.Cli", "frameworks\src\Lion.AbpPro.Cli\Lion.AbpPro.Cli.csproj", "{AA8325D9-C342-4AA0-A324-BF696D70B6CF}" |
|||
EndProject |
|||
Global |
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
|||
Debug|Any CPU = Debug|Any CPU |
|||
Release|Any CPU = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
|||
{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{56FE9DC1-E625-4A05-A96A-8DA4CB79B0B5}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{AA8325D9-C342-4AA0-A324-BF696D70B6CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{AA8325D9-C342-4AA0-A324-BF696D70B6CF}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{AA8325D9-C342-4AA0-A324-BF696D70B6CF}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{AA8325D9-C342-4AA0-A324-BF696D70B6CF}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
EndGlobalSection |
|||
EndGlobal |
|||
@ -0,0 +1,24 @@ |
|||
namespace Lion.AbpPro.Cli.Auth; |
|||
|
|||
public class GithubTokenAuthService : ITokenAuthService, ITransientDependency |
|||
{ |
|||
public async Task SetAsync(string token) |
|||
{ |
|||
if (token.IsNullOrWhiteSpace()) |
|||
{ |
|||
throw new UserFriendlyException("token不能为空"); |
|||
} |
|||
|
|||
if (!Directory.Exists(CliPaths.Root)) |
|||
{ |
|||
Directory.CreateDirectory(CliPaths.Root); |
|||
} |
|||
|
|||
await File.WriteAllTextAsync(CliPaths.AccessToken, token, Encoding.UTF8); |
|||
} |
|||
|
|||
public async Task<string> GetAsync() |
|||
{ |
|||
return await File.ReadAllTextAsync(CliPaths.AccessToken); |
|||
} |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
namespace Lion.AbpPro.Cli.Auth; |
|||
|
|||
public interface ITokenAuthService |
|||
{ |
|||
/// <summary>
|
|||
/// 设置token
|
|||
/// </summary>
|
|||
Task SetAsync(string token); |
|||
|
|||
/// <summary>
|
|||
/// 获取token
|
|||
/// </summary>
|
|||
Task<string> GetAsync(); |
|||
} |
|||
@ -0,0 +1,144 @@ |
|||
using Lion.AbpPro.Cli.Auth; |
|||
|
|||
namespace Lion.AbpPro.Cli.Commands; |
|||
|
|||
public class CreateCommand : IConsoleCommand, ITransientDependency |
|||
{ |
|||
public const string Name = "create"; |
|||
private readonly ILogger<CreateCommand> _logger; |
|||
private readonly ITokenAuthService _tokenAuthService; |
|||
private readonly Options.AbpProCliBusinessOptions _cliOptions; |
|||
private readonly IGithubClient _githubClient; |
|||
private readonly ISourceCodeManager _sourceCodeManager; |
|||
|
|||
public CreateCommand(ILogger<CreateCommand> logger, ITokenAuthService tokenAuthService, IOptions<AbpProCliBusinessOptions> cliOptions, IGithubClient githubClient, ISourceCodeManager sourceCodeManager) |
|||
{ |
|||
_logger = logger; |
|||
_tokenAuthService = tokenAuthService; |
|||
_githubClient = githubClient; |
|||
_sourceCodeManager = sourceCodeManager; |
|||
_cliOptions = cliOptions.Value; |
|||
} |
|||
|
|||
public async Task ExecuteAsync(CommandLineArgs commandLineArgs) |
|||
{ |
|||
_logger.LogInformation($"开始创建模板......"); |
|||
|
|||
#region 参数判断
|
|||
|
|||
// 判断是否输入token
|
|||
var token = await _tokenAuthService.GetAsync(); |
|||
if (token.IsNullOrWhiteSpace()) |
|||
{ |
|||
_logger.LogError("请登录cli, lion.abp login -token 你的token"); |
|||
return; |
|||
} |
|||
|
|||
// 检查模板是否正确
|
|||
var template = commandLineArgs.Options.GetOrNull(CommandOptions.Template.Short, CommandOptions.Template.Long); |
|||
var allTemplates = _cliOptions.Templates.Select(e => e.Key).JoinAsString("|"); |
|||
if (template.IsNullOrWhiteSpace()) |
|||
{ |
|||
_logger.LogError($"请输入模板名称,lion.abp create -t 模板名称({allTemplates})"); |
|||
GetUsageInfo(); |
|||
return; |
|||
} |
|||
|
|||
var templateOptions = _cliOptions.Templates.FirstOrDefault(e => e.Key == template); |
|||
if (templateOptions == null) |
|||
{ |
|||
_logger.LogError($"模板类型不正确,lion.abp create -t 模板名称({allTemplates})"); |
|||
GetUsageInfo(); |
|||
return; |
|||
} |
|||
|
|||
//校验是否输入公司名称
|
|||
var companyName = commandLineArgs.Options.GetOrNull(CommandOptions.Company.Short, CommandOptions.Company.Long); |
|||
if (companyName.IsNullOrWhiteSpace()) |
|||
{ |
|||
_logger.LogError("请输入公司名称lion.abp create -c 公司名称"); |
|||
GetUsageInfo(); |
|||
return; |
|||
} |
|||
|
|||
//校验是否输入项目名称
|
|||
var projectName = commandLineArgs.Options.GetOrNull(CommandOptions.Project.Short, CommandOptions.Project.Long); |
|||
if (projectName.IsNullOrWhiteSpace()) |
|||
{ |
|||
_logger.LogError("请输入公司名称lion.abp create -p 项目名称"); |
|||
GetUsageInfo(); |
|||
return; |
|||
} |
|||
|
|||
var version = commandLineArgs.Options.GetOrNull(CommandOptions.Version.Short, CommandOptions.Version.Long); |
|||
|
|||
#endregion
|
|||
|
|||
// 获取release信息
|
|||
Release release = null; |
|||
if (version.IsNullOrWhiteSpace()) |
|||
{ |
|||
release = await _githubClient.GetLatestVersionAsync(_cliOptions.Owner, _cliOptions.RepositoryId, token); |
|||
version = release.TagName; |
|||
} |
|||
else |
|||
{ |
|||
release = await _githubClient.CheckVersionAsync(_cliOptions.Owner, _cliOptions.RepositoryId, token, version); |
|||
} |
|||
|
|||
// 下载源码
|
|||
var localFilePath = Path.Combine(CliPaths.Source, $"{_cliOptions.RepositoryId}-{release.TagName}.zip"); |
|||
|
|||
if (!Directory.Exists(CliPaths.Source)) |
|||
{ |
|||
Directory.CreateDirectory(CliPaths.Source); |
|||
} |
|||
|
|||
if (!File.Exists(localFilePath)) |
|||
{ |
|||
_logger.LogInformation("正在从github下载源码......"); |
|||
await _githubClient.DownloadAsync(release.ZipballUrl, localFilePath, token); |
|||
_logger.LogInformation("github源码下载完成."); |
|||
} |
|||
|
|||
// 解压源码
|
|||
var extractPath = _sourceCodeManager.ExtractProjectZip(localFilePath, _cliOptions.RepositoryId, version); |
|||
|
|||
var contentPath = templateOptions.Name == "source" ? Path.Combine(extractPath, _cliOptions.RepositoryId) : Path.Combine(extractPath, _cliOptions.RepositoryId, "templates", templateOptions.Name); |
|||
// 复制源码到输出目录
|
|||
var destOutput = Path.Combine(CliPaths.Output, $"{companyName}-{projectName}-{version}"); |
|||
|
|||
DirectoryAndFileHelper.CopyFolder(contentPath, destOutput, templateOptions.ExcludeFiles); |
|||
|
|||
ReplaceHelper.ReplaceTemplates( |
|||
destOutput, |
|||
templateOptions.OldCompanyName, |
|||
templateOptions.OldProjectName, |
|||
templateOptions.OldModuleName, |
|||
companyName, |
|||
projectName, |
|||
string.Empty, |
|||
templateOptions.ReplaceSuffix, |
|||
version); |
|||
|
|||
_logger.LogInformation($"创建模板成功,请查阅----->: {destOutput}"); |
|||
|
|||
ProcessHelper.OpenExplorer(destOutput); |
|||
} |
|||
|
|||
|
|||
public void GetUsageInfo() |
|||
{ |
|||
var sb = new StringBuilder(); |
|||
sb.AppendLine(""); |
|||
sb.AppendLine("Usage:"); |
|||
sb.AppendLine(" lion.abp create"); |
|||
sb.AppendLine("lion.abp create -t 模板名称(source | nuget) -c 公司名称 -p 项目名称"); |
|||
_logger.LogInformation(sb.ToString()); |
|||
} |
|||
|
|||
public string GetShortDescription() |
|||
{ |
|||
return "创建商业版本项目:lion.abp create -t 模板名称(source | nuget) -c 公司名称 -p 项目名称"; |
|||
} |
|||
} |
|||
@ -0,0 +1,46 @@ |
|||
using Lion.AbpPro.Cli.Auth; |
|||
|
|||
namespace Lion.AbpPro.Cli.Commands; |
|||
|
|||
public class LoginCommand : IConsoleCommand, ITransientDependency |
|||
{ |
|||
public const string Name = "login"; |
|||
private readonly ILogger<LoginCommand> _logger; |
|||
private readonly ITokenAuthService _tokenAuthService; |
|||
|
|||
public LoginCommand(ILogger<LoginCommand> logger, ITokenAuthService tokenAuthService) |
|||
{ |
|||
_logger = logger; |
|||
_tokenAuthService = tokenAuthService; |
|||
} |
|||
|
|||
public async Task ExecuteAsync(CommandLineArgs commandLineArgs) |
|||
{ |
|||
// 获取参数
|
|||
var token = commandLineArgs.Options.GetOrNull(CommandOptions.Token.Short, CommandOptions.Token.Long); |
|||
if (token.IsNullOrWhiteSpace()) |
|||
{ |
|||
_logger.LogError("请输入token,完成命令:lion.abp login -token 你的token"); |
|||
} |
|||
|
|||
// 保存token
|
|||
await _tokenAuthService.SetAsync(token); |
|||
_logger.LogInformation("恭喜你设置token成功."); |
|||
} |
|||
|
|||
public void GetUsageInfo() |
|||
{ |
|||
var sb = new StringBuilder(); |
|||
sb.AppendLine(""); |
|||
sb.AppendLine("Usage:"); |
|||
sb.AppendLine(" lion.abp login"); |
|||
sb.AppendLine(""); |
|||
sb.AppendLine("请在github上创建token(经典),然后当作此命令的参数."); |
|||
_logger.LogInformation(sb.ToString()); |
|||
} |
|||
|
|||
public string GetShortDescription() |
|||
{ |
|||
return "登录: lion.abp login -token 你的token(请联系管理员)"; |
|||
} |
|||
} |
|||
@ -0,0 +1,75 @@ |
|||
using FileMode = System.IO.FileMode; |
|||
|
|||
namespace Lion.AbpPro.Cli.Github; |
|||
|
|||
public class GithubClient : IGithubClient, ITransientDependency |
|||
{ |
|||
private readonly IHttpClientFactory _httpClientFactory; |
|||
|
|||
public GithubClient(IHttpClientFactory httpClientFactory) |
|||
{ |
|||
_httpClientFactory = httpClientFactory; |
|||
} |
|||
|
|||
protected virtual GitHubClient GetGitHubClient(string repositoryId, string token) |
|||
{ |
|||
return new GitHubClient(new ProductHeaderValue("OctokitApp")) |
|||
{ |
|||
// 匿名访问,api会限流,所以需要设置访问令牌
|
|||
Credentials = new Credentials(token) |
|||
}; |
|||
} |
|||
|
|||
public async Task<Release> GetLatestVersionAsync(string owner, string repositoryId, string token) |
|||
{ |
|||
var github = GetGitHubClient(repositoryId, token); |
|||
var release = await github.Repository.Release.GetLatest(owner, repositoryId); |
|||
if (release == null) |
|||
{ |
|||
throw new Exception($"没有找到Release,请联系仓库管理员."); |
|||
} |
|||
|
|||
return release; |
|||
} |
|||
|
|||
public async Task<Release> CheckVersionAsync(string owner, string repositoryId, string token, string version) |
|||
{ |
|||
var github = GetGitHubClient(repositoryId, token); |
|||
var release = await github.Repository.Release.Get(owner, repositoryId, version); |
|||
if (release == null) |
|||
{ |
|||
throw new UserFriendlyException($"版本{version}不存在."); |
|||
} |
|||
|
|||
return release; |
|||
} |
|||
|
|||
public async Task DownloadAsync(string url, string localFilePath, string token) |
|||
{ |
|||
using var httpClient = _httpClientFactory.CreateClient(); |
|||
// 添加 GitHub 认证头
|
|||
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("OctokitApp"); |
|||
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Token", token); |
|||
|
|||
// 下载文件
|
|||
var response = await httpClient.GetAsync(url); |
|||
response.EnsureSuccessStatusCode(); |
|||
|
|||
// 保存到本地
|
|||
await using var fileStream = new FileStream(localFilePath, FileMode.Create, FileAccess.Write); |
|||
await response.Content.CopyToAsync(fileStream); |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// 下载源码
|
|||
/// </summary>
|
|||
public async Task DownloadAsync(string owner, string repositoryId, string version, string localFilePath) |
|||
{ |
|||
var httpClient = _httpClientFactory.CreateClient(); |
|||
var uri = new Uri($"https://github.com/{owner}/{repositoryId}/archive/refs/tags/{version}.zip"); |
|||
var response = await httpClient.GetAsync(uri); |
|||
// 保存到本地
|
|||
await using var fileStream = new FileStream(localFilePath, FileMode.Create, FileAccess.Write); |
|||
await response.Content.CopyToAsync(fileStream); |
|||
} |
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
namespace Lion.AbpPro.Cli.Github; |
|||
|
|||
public interface IGithubClient |
|||
{ |
|||
/// <summary>
|
|||
/// 获取最后一个版本
|
|||
/// </summary>
|
|||
Task<Release> GetLatestVersionAsync(string owner,string repositoryId,string token); |
|||
|
|||
/// <summary>
|
|||
/// 检查版本是否存在
|
|||
/// </summary>
|
|||
Task<Release> CheckVersionAsync(string owner, string repositoryId,string token, string version); |
|||
|
|||
/// <summary>
|
|||
/// 下载源码
|
|||
/// </summary>
|
|||
Task DownloadAsync(string url, string localFilePath, string token); |
|||
|
|||
/// <summary>
|
|||
/// 下载源码
|
|||
/// public 仓库使用
|
|||
/// </summary>
|
|||
Task DownloadAsync(string owner, string repositoryId, string version, string localFilePath); |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
namespace Lion.AbpPro.Cli.Options; |
|||
|
|||
public class AbpProCliBusinessOptions |
|||
{ |
|||
/// <summary>
|
|||
/// 仓库拥有者
|
|||
/// </summary>
|
|||
public string Owner { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 仓库Id
|
|||
/// </summary>
|
|||
public string RepositoryId { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// Github Token
|
|||
/// </summary>
|
|||
public string Token { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 解密 Github Token
|
|||
/// </summary>
|
|||
public string DecryptToken => Token; |
|||
|
|||
/// <summary>
|
|||
/// 模板信息
|
|||
/// </summary>
|
|||
public List<AbpProTemplateOptions> Templates { get; set; } |
|||
|
|||
} |
|||
@ -0,0 +1,37 @@ |
|||
namespace Lion.AbpPro.Cli.Utils; |
|||
|
|||
public static class ProcessHelper |
|||
{ |
|||
public static void OpenExplorer(string path) |
|||
{ |
|||
try |
|||
{ |
|||
if (string.IsNullOrWhiteSpace(path)) return; |
|||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) |
|||
{ |
|||
Process.Start("explorer.exe", path); |
|||
} |
|||
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) |
|||
{ |
|||
// macOS 系统使用 open 命令打开文件夹
|
|||
var startInfo = new ProcessStartInfo |
|||
{ |
|||
FileName = "open", |
|||
Arguments = path, |
|||
UseShellExecute = false, |
|||
CreateNoWindow = true |
|||
}; |
|||
using (var process = new Process()) |
|||
{ |
|||
process.StartInfo = startInfo; |
|||
process.Start(); |
|||
process.WaitForExit(); |
|||
} |
|||
} |
|||
} |
|||
catch (Exception e) |
|||
{ |
|||
// ignore
|
|||
} |
|||
} |
|||
} |
|||
0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContext.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContext.cs
0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContext.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContext.cs
0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContextFactory.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContextFactory.cs
0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContextFactory.cs → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/EntityFrameworkCore/MyModuleNameHttpApiHostMigrationsDbContextFactory.cs
0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host.csproj → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host.csproj
0
templates/abp-vnext-pro-nuget-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host.csproj → templates/pro-module/host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host/MyCompanyName.MyProjectName.MyModuleName.HttpApi.Host.csproj
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts.csproj
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts.csproj
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissionDefinitionProvider.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissionDefinitionProvider.cs
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissionDefinitionProvider.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Application.Contracts/Permissions/MyModuleNamePermissionDefinitionProvider.cs
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared.csproj
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared/MyCompanyName.MyProjectName.MyModuleName.Domain.Shared.csproj
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameDbContextModelCreatingExtensions.cs
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameEntityFrameworkCoreModule.cs
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/EntityFrameworkCore/MyModuleNameModelBuilderConfigurationOptions.cs
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore.csproj
0
templates/abp-vnext-pro-nuget-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore.csproj → templates/pro-module/src/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore/MyCompanyName.MyProjectName.MyModuleName.EntityFrameworkCore.csproj
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue