diff --git a/.gitignore b/.gitignore index c0347428f2..d3968773a0 100644 --- a/.gitignore +++ b/.gitignore @@ -314,7 +314,7 @@ abp-build-config.json tempkey.jwk # ABP Analyzing files -*.abppkg.analyze.json +# [Disabled for now] *.abppkg.analyze.json # appsettings.secrets.json appsettings.secrets.json \ No newline at end of file diff --git a/build/common.ps1 b/build/common.ps1 index 172e22ad6a..cdc0eaa1c0 100644 --- a/build/common.ps1 +++ b/build/common.ps1 @@ -7,6 +7,7 @@ $rootFolder = (Get-Item -Path "./" -Verbose).FullName # List of solutions used only in development mode $solutionPaths = @( "../framework", + "../studio", "../modules/basic-theme", "../modules/users", "../modules/permission-management", @@ -19,7 +20,8 @@ $solutionPaths = @( "../modules/background-jobs", "../modules/account", "../modules/cms-kit", - "../modules/blob-storing-database" + "../modules/blob-storing-database", + "../studio" ) if ($full -eq "-f") diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs index dba7cebb86..72b1cd2e6d 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs @@ -9,6 +9,13 @@ namespace Volo.Abp.Cli.Build { public class DefaultDotNetProjectBuilder : IDotNetProjectBuilder, ITransientDependency { + public ICmdHelper CmdHelper { get; } + + public DefaultDotNetProjectBuilder(ICmdHelper cmdHelper) + { + CmdHelper = cmdHelper; + } + public List BuildProjects(List projects, string arguments) { var builtProjects = new ConcurrentBag(); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs index a418ceba52..f06fcb6d2d 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs @@ -24,17 +24,20 @@ namespace Volo.Abp.Cli protected ICommandSelector CommandSelector { get; } protected IServiceScopeFactory ServiceScopeFactory { get; } protected NuGetService NuGetService { get; } + public ICmdHelper CmdHelper { get; } public CliService( ICommandLineArgumentParser commandLineArgumentParser, ICommandSelector commandSelector, IServiceScopeFactory serviceScopeFactory, - NuGetService nugetService) + NuGetService nugetService, + ICmdHelper cmdHelper) { CommandLineArgumentParser = commandLineArgumentParser; CommandSelector = commandSelector; ServiceScopeFactory = serviceScopeFactory; NuGetService = nugetService; + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } @@ -42,7 +45,7 @@ namespace Volo.Abp.Cli public async Task RunAsync(string[] args) { Logger.LogInformation("ABP CLI (https://abp.io)"); - + var commandLineArgs = CommandLineArgumentParser.Parse(args); #if !DEBUG @@ -147,7 +150,7 @@ namespace Volo.Abp.Cli await RunInternalAsync(args); } } - + private async Task RunInternalAsync(CommandLineArgs commandLineArgs) { var commandType = CommandSelector.Select(commandLineArgs); @@ -203,7 +206,7 @@ namespace Volo.Abp.Cli { SemanticVersion currentCliVersion = default; - var consoleOutput = new StringReader(CmdHelper.RunCmdAndGetOutput($"dotnet tool list -g")); + var consoleOutput = new StringReader(CmdHelper.RunCmdAndGetOutput($"dotnet tool list -g", out int exitCode)); string line; while ((line = await consoleOutput.ReadLineAsync()) != null) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs index 15d03236ae..736d1a1ba3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs @@ -4,19 +4,18 @@ namespace Volo.Abp.Cli { public static class CliUrls { -#if DEBUG + /* public const string WwwAbpIo = WwwAbpIoDevelopment; public const string AccountAbpIo = AccountAbpIoDevelopment; public const string NuGetRootPath = NuGetRootPathDevelopment; -#else +*/ public const string WwwAbpIo = WwwAbpIoProduction; public const string AccountAbpIo = AccountAbpIoProduction; public const string NuGetRootPath = NuGetRootPathProduction; -#endif public const string WwwAbpIoProduction = "https://abp.io/"; public const string AccountAbpIoProduction = "https://account.abp.io/"; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs index 99ddba2de8..aa31060c48 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs @@ -18,7 +18,7 @@ namespace Volo.Abp.Cli.Commands public ILogger Logger { get; set; } protected SolutionModuleAdder SolutionModuleAdder { get; } - public SolutionAbpVersionFinder SolutionAbpVersionFinder { get; } + public SolutionPackageVersionFinder SolutionPackageVersionFinder { get; } public AddModuleInfoOutput LastAddedModuleInfo { @@ -33,10 +33,10 @@ namespace Volo.Abp.Cli.Commands } } - public AddModuleCommand(SolutionModuleAdder solutionModuleAdder, SolutionAbpVersionFinder solutionAbpVersionFinder) + public AddModuleCommand(SolutionModuleAdder solutionModuleAdder, SolutionPackageVersionFinder solutionPackageVersionFinder) { SolutionModuleAdder = solutionModuleAdder; - SolutionAbpVersionFinder = solutionAbpVersionFinder; + SolutionPackageVersionFinder = solutionPackageVersionFinder; Logger = NullLogger.Instance; } @@ -62,7 +62,7 @@ namespace Volo.Abp.Cli.Commands var version = commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long); if (version == null) { - version = SolutionAbpVersionFinder.Find(solutionFile); + version = SolutionPackageVersionFinder.Find(solutionFile); } var moduleInfo = await SolutionModuleAdder.AddAsync( diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs index 7b9fbd35fe..89e9ea7904 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs @@ -12,10 +12,12 @@ namespace Volo.Abp.Cli.Commands { public class CreateMigrationAndRunMigratorCommand : IConsoleCommand, ITransientDependency { + public ICmdHelper CmdHelper { get; } public ILogger Logger { get; set; } - public CreateMigrationAndRunMigratorCommand() + public CreateMigrationAndRunMigratorCommand(ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } @@ -98,7 +100,7 @@ namespace Volo.Abp.Cli.Commands return Path.GetFileName(dbContext).RemovePostFix(".cs"); } - private static string AddMigrationAndGetOutput(string dbMigrationsFolder, string dbContext, string outputDirectory) + private string AddMigrationAndGetOutput(string dbMigrationsFolder, string dbContext, string outputDirectory) { var dbContextOption = string.IsNullOrWhiteSpace(dbContext) ? string.Empty @@ -107,12 +109,12 @@ namespace Volo.Abp.Cli.Commands var addMigrationCmd = $"cd \"{dbMigrationsFolder}\" && " + $"dotnet ef migrations add Initial --output-dir {outputDirectory} {dbContextOption}"; - return CmdHelper.RunCmdAndGetOutput(addMigrationCmd); + return CmdHelper.RunCmdAndGetOutput(addMigrationCmd, out int exitCode); } - private static bool IsDotNetEfToolInstalled() + private bool IsDotNetEfToolInstalled() { - var output = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g"); + var output = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g", out int exitCode); return output.Contains("dotnet-ef"); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index 053b7cf346..d347e84418 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -35,8 +35,9 @@ namespace Volo.Abp.Cli.Commands public NewCommand(TemplateProjectBuilder templateProjectBuilder , ITemplateInfoProvider templateInfoProvider, - ConnectionStringProvider connectionStringProvider) - : base(connectionStringProvider) + ConnectionStringProvider connectionStringProvider, + ICmdHelper cmdHelper) + : base(connectionStringProvider, cmdHelper) { TemplateProjectBuilder = templateProjectBuilder; TemplateInfoProvider = templateInfoProvider; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 927019f566..6aa528a7b7 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -18,11 +18,13 @@ namespace Volo.Abp.Cli.Commands public abstract class ProjectCreationCommandBase { public ConnectionStringProvider ConnectionStringProvider { get; } + public ICmdHelper CmdHelper { get; } public ILogger Logger { get; set; } - public ProjectCreationCommandBase(ConnectionStringProvider connectionStringProvider) + public ProjectCreationCommandBase(ConnectionStringProvider connectionStringProvider, ICmdHelper cmdHelper) { ConnectionStringProvider = connectionStringProvider; + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } @@ -204,6 +206,10 @@ namespace Volo.Abp.Cli.Commands bool isTiered, CommandLineArgs commandLineArgs) { + +#if DEBUG + return; +#endif if (AppTemplateBase.IsAppTemplate(template)) { var isCommercial = template == AppProTemplate.TemplateName; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs index 34cde45265..d81d016ac8 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs @@ -15,13 +15,15 @@ namespace Volo.Abp.Cli.Commands { public class SuiteCommand : IConsoleCommand, ITransientDependency { + public ICmdHelper CmdHelper { get; } private readonly AbpNuGetIndexUrlService _nuGetIndexUrlService; private readonly NuGetService _nuGetService; private const string SuitePackageName = "Volo.Abp.Suite"; public ILogger Logger { get; set; } - public SuiteCommand(AbpNuGetIndexUrlService nuGetIndexUrlService, NuGetService nuGetService) + public SuiteCommand(AbpNuGetIndexUrlService nuGetIndexUrlService, NuGetService nuGetService, ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; _nuGetIndexUrlService = nuGetIndexUrlService; _nuGetService = nuGetService; Logger = NullLogger.Instance; @@ -71,7 +73,7 @@ namespace Volo.Abp.Cli.Commands private string GetCurrentSuiteVersion() { - var dotnetToolList = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g"); + var dotnetToolList = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g", out int exitCode); var suiteLine = dotnetToolList.Split(Environment.NewLine) .FirstOrDefault(l => l.ToLower().StartsWith("volo.abp.suite ")); @@ -127,11 +129,11 @@ namespace Volo.Abp.Cli.Commands versionOption = $" --version {version}"; } - var result = CmdHelper.RunCmd( - $"dotnet tool install {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g" + CmdHelper.RunCmd( + $"dotnet tool install {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g", out int exitCode ); - if (result == 0) + if (exitCode == 0) { Logger.LogInformation("ABP Suite has been successfully installed."); Logger.LogInformation("You can run it with the CLI command \"abp suite\""); @@ -197,11 +199,11 @@ namespace Volo.Abp.Cli.Commands versionOption = $" --version {version}"; } - var result = CmdHelper.RunCmd( - $"dotnet tool update {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g" + CmdHelper.RunCmd( + $"dotnet tool update {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g", out int exitCode ); - if (result != 0) + if (exitCode != 0) { ShowSuiteManualUpdateCommand(); } @@ -230,7 +232,7 @@ namespace Volo.Abp.Cli.Commands Logger.LogError("dotnet tool update -g Volo.Abp.Suite --add-source https://nuget.abp.io//v3/index.json"); } - private static void RemoveSuite() + private void RemoveSuite() { CmdHelper.RunCmd("dotnet tool uninstall " + SuitePackageName + " -g"); } @@ -275,7 +277,7 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine(" abp suite"); sb.AppendLine(" abp suite install"); sb.AppendLine(" abp suite install --preview"); - sb.AppendLine(" abp suite install --version 4.2.2"); + sb.AppendLine(" abp suite install --version 4.2.2"); sb.AppendLine(" abp suite update"); sb.AppendLine(" abp suite update --preview"); sb.AppendLine(" abp suite remove"); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs index 5379c62aed..421cae3d3c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs @@ -16,14 +16,16 @@ namespace Volo.Abp.Cli.LIbs { public class InstallLibsService : IInstallLibsService, ITransientDependency { + public ICmdHelper CmdHelper { get; } public const string LibsDirectory = "./wwwroot/libs"; public ILogger Logger { get; set; } private readonly IJsonSerializer _jsonSerializer; - public InstallLibsService(IJsonSerializer jsonSerializer) + public InstallLibsService(IJsonSerializer jsonSerializer, ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; _jsonSerializer = jsonSerializer; Logger = NullLogger.Instance; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs index 7907baaa2d..ef85131ff8 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs @@ -1,3 +1,4 @@ +using System; using Newtonsoft.Json; using NuGet.Versioning; using System.Collections.Generic; @@ -5,7 +6,6 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; -using Volo.Abp.Cli.Auth; using Volo.Abp.Cli.Http; using Volo.Abp.Cli.Licensing; using Volo.Abp.Cli.ProjectBuilding; @@ -24,7 +24,6 @@ namespace Volo.Abp.Cli.NuGet protected IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; } private readonly IApiKeyService _apiKeyService; private readonly CliHttpClientFactory _cliHttpClientFactory; - private List _proPackageList; private DeveloperApiKeyResult _apiKeyResult; public NuGetService( @@ -42,10 +41,32 @@ namespace Volo.Abp.Cli.NuGet Logger = NullLogger.Instance; } + public async Task PackageExistAsync(string packageId, string version = null) + { + var versionList = await GetPackageVersionListAsync(packageId, false, true); + + if (versionList == null) + { + return false; + } + + if (version == null) + { + return versionList.Any(); + } + + return versionList.Contains(version); + } + public async Task GetLatestVersionOrNullAsync(string packageId, bool includeNightly = false, bool includeReleaseCandidates = false) { var versionList = await GetPackageVersionListAsync(packageId, includeNightly, includeReleaseCandidates); + if (versionList == null) + { + return null; + } + List versions; if (!includeNightly && !includeReleaseCandidates) @@ -77,76 +98,54 @@ namespace Volo.Abp.Cli.NuGet public async Task> GetPackageVersionListAsync(string packageId, bool includeNightly = false, bool includeReleaseCandidates = false) { - if (AuthService.IsLoggedIn()) - { - _proPackageList ??= await GetProPackageListAsync(); - } - - string url; if (includeNightly) { - url = $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json"; - } - else if (_proPackageList?.Contains(packageId) ?? false) - { - url = await GetNuGetUrlForCommercialPackage(packageId); - } - else - { - url = $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json"; + var includeNightlyUrl = $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json"; + return await GetPackageVersionListFromUrlAsync(includeNightlyUrl); } - var client = _cliHttpClientFactory.CreateClient(needsAuthentication: false); + var nugetUrl = $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json"; + var commercialUrl = await GetNuGetUrlForCommercialPackage(packageId); - using (var responseMessage = await client.GetHttpResponseMessageWithRetryAsync( - url, - cancellationToken: CancellationTokenProvider.Token, - logger: Logger - )) - { - await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage); - var responseContent = await responseMessage.Content.ReadAsStringAsync(); - return JsonSerializer.Deserialize(responseContent).Versions; - } + return (await GetPackageVersionListFromUrlAsync(nugetUrl)) ?? (await GetPackageVersionListFromUrlAsync(commercialUrl)); } - private async Task GetNuGetUrlForCommercialPackage(string packageId) + private async Task> GetPackageVersionListFromUrlAsync(string url) { - if (_apiKeyResult == null) + try { - _apiKeyResult = await _apiKeyService.GetApiKeyOrNullAsync(); - } + var client = _cliHttpClientFactory.CreateClient(needsAuthentication: false); - return CliUrls.GetNuGetPackageInfoUrl(_apiKeyResult.ApiKey, packageId); + using (var responseMessage = await client.GetHttpResponseMessageWithRetryAsync( + url, + cancellationToken: CancellationTokenProvider.Token, + logger: Logger + )) + { + await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage); + var responseContent = await responseMessage.Content.ReadAsStringAsync(); + return JsonSerializer.Deserialize(responseContent).Versions; + } + } + catch (Exception) + { + return null; + } } - private async Task> GetProPackageListAsync() + private async Task GetNuGetUrlForCommercialPackage(string packageId) { - var url = $"{CliUrls.WwwAbpIo}api/app/nugetPackage/proPackageNames"; - var client = _cliHttpClientFactory.CreateClient(needsAuthentication: true); - - using (var responseMessage = await client.GetHttpResponseMessageWithRetryAsync( - url: url, - cancellationToken: CancellationTokenProvider.Token, - logger: Logger - )) + if (_apiKeyResult == null) { - if (responseMessage.IsSuccessStatusCode) - { - return JsonSerializer.Deserialize>(await responseMessage.Content.ReadAsStringAsync()); - } - - var exceptionMessage = "Remote server returns '" + (int)responseMessage.StatusCode + "-" + responseMessage.ReasonPhrase + "'. "; - var remoteServiceErrorMessage = await RemoteServiceExceptionHandler.GetAbpRemoteServiceErrorAsync(responseMessage); + _apiKeyResult = await _apiKeyService.GetApiKeyOrNullAsync(); - if (remoteServiceErrorMessage != null) + if (_apiKeyResult == null) { - exceptionMessage += remoteServiceErrorMessage; + return null; } - - Logger.LogError(exceptionMessage); - return null; } + + return CliUrls.GetNuGetPackageInfoUrl(_apiKeyResult.ApiKey, packageId); } public class NuGetVersionResultDto @@ -155,4 +154,4 @@ namespace Volo.Abp.Cli.NuGet public List Versions { get; set; } } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs index b8c1f24b46..d2b2f7f95c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs @@ -1,6 +1,10 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Volo.Abp.Cli.ProjectBuilding.Files; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps { @@ -35,6 +39,25 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps var solutionFile = context.GetFile(_solutionFilePath); solutionFile.NormalizeLineEndings(); solutionFile.SetLines(RemoveProject(solutionFile.GetLines().ToList())); + + RemoveProjectFromAbpmdlFile(context); + } + + private void RemoveProjectFromAbpmdlFile(ProjectBuildContext context) + { + var abpmdlFile = context.FindFile(_solutionFilePath.RemovePostFix(".sln") + ".abpmdl.json"); + + if (abpmdlFile == null) + { + return; + } + + var jsonRoot = JObject.Parse(abpmdlFile.Content); + var packagesObj = (JObject) jsonRoot["packages"]; + + packagesObj?.Remove(_projectName); + + abpmdlFile.SetContent(jsonRoot.ToString(Formatting.Indented)); } private List RemoveProject(List solutionFileLines) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs index 05996b90d7..8bc0c2d05e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs @@ -10,10 +10,12 @@ namespace Volo.Abp.Cli.ProjectModification { public class EfCoreMigrationManager : ITransientDependency { + public ICmdHelper CmdHelper { get; } public ILogger Logger { get; set; } - public EfCoreMigrationManager() + public EfCoreMigrationManager(ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs index 7c8ba63e29..7df511592b 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs @@ -7,10 +7,12 @@ namespace Volo.Abp.Cli.ProjectModification { public class NpmGlobalPackagesChecker : ITransientDependency { + public ICmdHelper CmdHelper { get; } public ILogger Logger { get; set; } - public NpmGlobalPackagesChecker() + public NpmGlobalPackagesChecker(ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } @@ -31,7 +33,7 @@ namespace Volo.Abp.Cli.ProjectModification protected virtual string GetInstalledNpmPackages() { Logger.LogInformation("Checking installed npm global packages..."); - return CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0 --silent"); + return CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0 --silent", out int exitCode); } protected virtual void InstallYarn() diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs index bf23bc3786..4530b59142 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs @@ -23,6 +23,7 @@ namespace Volo.Abp.Cli.ProjectModification { public ILogger Logger { get; set; } protected ICancellationTokenProvider CancellationTokenProvider { get; } + public ICmdHelper CmdHelper { get; } private readonly PackageJsonFileFinder _packageJsonFileFinder; private readonly NpmGlobalPackagesChecker _npmGlobalPackagesChecker; @@ -33,11 +34,13 @@ namespace Volo.Abp.Cli.ProjectModification PackageJsonFileFinder packageJsonFileFinder, NpmGlobalPackagesChecker npmGlobalPackagesChecker, ICancellationTokenProvider cancellationTokenProvider, - CliHttpClientFactory cliHttpClientFactory) + CliHttpClientFactory cliHttpClientFactory, + ICmdHelper cmdHelper) { _packageJsonFileFinder = packageJsonFileFinder; _npmGlobalPackagesChecker = npmGlobalPackagesChecker; CancellationTokenProvider = cancellationTokenProvider; + CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs index 3c283319ac..3baab9ed98 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs @@ -26,6 +26,7 @@ namespace Volo.Abp.Cli.ProjectModification public SourceCodeDownloadService SourceCodeDownloadService { get; } public AngularSourceCodeAdder AngularSourceCodeAdder { get; } public IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; } + public ICmdHelper CmdHelper { get; } private readonly CliHttpClientFactory _cliHttpClientFactory; public ILogger Logger { get; set; } @@ -33,12 +34,14 @@ namespace Volo.Abp.Cli.ProjectModification IJsonSerializer jsonSerializer, SourceCodeDownloadService sourceCodeDownloadService, AngularSourceCodeAdder angularSourceCodeAdder, - IRemoteServiceExceptionHandler remoteServiceExceptionHandler) + IRemoteServiceExceptionHandler remoteServiceExceptionHandler, + ICmdHelper cmdHelper) { JsonSerializer = jsonSerializer; SourceCodeDownloadService = sourceCodeDownloadService; AngularSourceCodeAdder = angularSourceCodeAdder; RemoteServiceExceptionHandler = remoteServiceExceptionHandler; + CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; } @@ -202,4 +205,4 @@ namespace Volo.Abp.Cli.ProjectModification } } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs index 6d88ecb3ec..f16bc2ac6c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs @@ -25,6 +25,7 @@ namespace Volo.Abp.Cli.ProjectModification public BundleCommand BundleCommand { get; } public SourceCodeDownloadService SourceCodeDownloadService { get; } public SolutionFileModifier SolutionFileModifier { get; } + public ICmdHelper CmdHelper { get; } protected IJsonSerializer JsonSerializer { get; } protected ProjectNpmPackageAdder NpmPackageAdder { get; } @@ -43,7 +44,8 @@ namespace Volo.Abp.Cli.ProjectModification BundleCommand bundleCommand, CliHttpClientFactory cliHttpClientFactory, SourceCodeDownloadService sourceCodeDownloadService, - SolutionFileModifier solutionFileModifier) + SolutionFileModifier solutionFileModifier, + ICmdHelper cmdHelper) { JsonSerializer = jsonSerializer; NpmPackageAdder = npmPackageAdder; @@ -53,6 +55,7 @@ namespace Volo.Abp.Cli.ProjectModification BundleCommand = bundleCommand; SourceCodeDownloadService = sourceCodeDownloadService; SolutionFileModifier = solutionFileModifier; + CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index 70900bfec7..cf1e9a3687 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -30,6 +30,7 @@ namespace Volo.Abp.Cli.ProjectModification public AngularSourceCodeAdder AngularSourceCodeAdder { get; } public NewCommand NewCommand { get; } public BundleCommand BundleCommand { get; } + public ICmdHelper CmdHelper { get; } protected IJsonSerializer JsonSerializer { get; } protected ProjectNugetPackageAdder ProjectNugetPackageAdder { get; } @@ -58,7 +59,8 @@ namespace Volo.Abp.Cli.ProjectModification AngularSourceCodeAdder angularSourceCodeAdder, NewCommand newCommand, BundleCommand bundleCommand, - CliHttpClientFactory cliHttpClientFactory) + CliHttpClientFactory cliHttpClientFactory, + ICmdHelper cmdHelper) { JsonSerializer = jsonSerializer; ProjectNugetPackageAdder = projectNugetPackageAdder; @@ -74,6 +76,7 @@ namespace Volo.Abp.Cli.ProjectModification AngularSourceCodeAdder = angularSourceCodeAdder; NewCommand = newCommand; BundleCommand = bundleCommand; + CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; } @@ -620,7 +623,7 @@ namespace Volo.Abp.Cli.ProjectModification if (!string.IsNullOrEmpty(dbMigratorProject)) { - CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(dbMigratorProject) + "\" && dotnet run"); + CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(dbMigratorProject) + "\" && dotnet run", out int exitCode); } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionAbpVersionFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionPackageVersionFinder.cs similarity index 82% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionAbpVersionFinder.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionPackageVersionFinder.cs index 93dbeacc22..e3aa93bdf3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionAbpVersionFinder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionPackageVersionFinder.cs @@ -7,15 +7,15 @@ using Volo.Abp.DependencyInjection; namespace Volo.Abp.Cli.ProjectModification { - public class SolutionAbpVersionFinder : ITransientDependency + public class SolutionPackageVersionFinder : ITransientDependency { - public string Find(string solutionFile) + public string Find(string solutionFile, string packagePrefix = "Volo.Abp") { var projectFilesUnderSrc = GetProjectFilesOfSolution(solutionFile); foreach (var projectFile in projectFilesUnderSrc) { var content = File.ReadAllText(projectFile); - if (TryParseVersionFromCsprojViaXmlDocument(content, out var s)) + if (TryParseVersionFromCsprojViaXmlDocument(content, out var s, packagePrefix)) { return s; } @@ -24,13 +24,13 @@ namespace Volo.Abp.Cli.ProjectModification return null; } - private static bool TryParseVersionFromCsprojViaXmlDocument(string content, out string version) + private static bool TryParseVersionFromCsprojViaXmlDocument(string content, out string version, string packagePrefix) { var doc = new XmlDocument() { PreserveWhitespace = true }; using (var stream = StreamHelper.GenerateStreamFromString(content)) { doc.Load(stream); - var nodes = doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.Abp')]"); + var nodes = doc.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{packagePrefix}')]"); var value = nodes?[0]?.Attributes?["Version"]?.Value; if (value == null) { @@ -43,12 +43,12 @@ namespace Volo.Abp.Cli.ProjectModification } } - public static bool TryParseVersionFromCsprojFile(string csprojContent, out string version) + public static bool TryParseVersionFromCsprojFile(string csprojContent, out string version, string packagePrefix = "Volo.Abp") { try { var matches = Regex.Matches(csprojContent, - @"PackageReference\s*Include\s*=\s*\""Volo.Abp(.*?)\""\s*Version\s*=\s*\""(.*?)\""", + @"PackageReference\s*Include\s*=\s*\""" + packagePrefix + @"(.*?)\""\s*Version\s*=\s*\""(.*?)\""", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline | RegexOptions.Multiline); @@ -72,11 +72,11 @@ namespace Volo.Abp.Cli.ProjectModification } - public static bool TryParseSemanticVersionFromCsprojFile(string csprojContent, out SemanticVersion version) + public static bool TryParseSemanticVersionFromCsprojFile(string csprojContent, out SemanticVersion version, string packagePrefix = "Volo.Abp") { try { - if (TryParseVersionFromCsprojFile(csprojContent, out var versionText)) + if (TryParseVersionFromCsprojFile(csprojContent, out var versionText, packagePrefix)) { return SemanticVersion.TryParse(versionText, out version); } @@ -90,13 +90,13 @@ namespace Volo.Abp.Cli.ProjectModification return false; } - public static bool TryFind(string solutionFile, out string version) + public static bool TryFind(string solutionFile, out string version, string packagePrefix = "Volo.Abp") { var projectFiles = GetProjectFilesOfSolution(solutionFile); foreach (var projectFile in projectFiles) { var csprojContent = File.ReadAllText(projectFile); - if (TryParseVersionFromCsprojFile(csprojContent, out var parsedVersion)) + if (TryParseVersionFromCsprojFile(csprojContent, out var parsedVersion, packagePrefix)) { version = parsedVersion; return true; @@ -107,13 +107,13 @@ namespace Volo.Abp.Cli.ProjectModification return false; } - public static bool TryFindSemanticVersion(string solutionFile, out SemanticVersion version) + public static bool TryFindSemanticVersion(string solutionFile, out SemanticVersion version, string packagePrefix = "Volo.Abp") { var projectFiles = GetProjectFilesOfSolution(solutionFile); foreach (var projectFile in projectFiles) { var csprojContent = File.ReadAllText(projectFile); - if (TryParseSemanticVersionFromCsprojFile(csprojContent, out var parsedVersion)) + if (TryParseSemanticVersionFromCsprojFile(csprojContent, out var parsedVersion, packagePrefix)) { version = parsedVersion; return true; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs index 2e20ec634a..bc5579ca1d 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs @@ -17,13 +17,16 @@ namespace Volo.Abp.Cli.ServiceProxying.Angular public const string Name = "NG"; private readonly CliService _cliService; + private readonly ICmdHelper _cmdhelper; public AngularServiceProxyGenerator( CliHttpClientFactory cliHttpClientFactory, IJsonSerializer jsonSerializer, + ICmdHelper cmdhelper, CliService cliService) : base(cliHttpClientFactory, jsonSerializer) { + _cmdhelper = cmdhelper; _cliService = cliService; } @@ -63,7 +66,7 @@ namespace Volo.Abp.Cli.ServiceProxying.Angular commandBuilder.Append($" --target {target}"); } - CmdHelper.RunCmd(commandBuilder.ToString()); + _cmdhelper.RunCmd(commandBuilder.ToString()); } private async Task CheckNgSchematicsAsync() diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs index 07b470225a..72b9ba1a90 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs @@ -1,14 +1,15 @@ using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; +using Volo.Abp.DependencyInjection; namespace Volo.Abp.Cli.Utils { - public static class CmdHelper + public class CmdHelper : ICmdHelper, ITransientDependency { - public static int SuccessfulExitCode = 0; + private const int SuccessfulExitCode = 0; - public static void OpenWebPage(string url) + public void OpenWebPage(string url) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { @@ -25,45 +26,57 @@ namespace Volo.Abp.Cli.Utils } } - public static void Run(string file, string arguments) + + public void Run(string file, string arguments) { var procStartInfo = new ProcessStartInfo(file, arguments); Process.Start(procStartInfo)?.WaitForExit(); } - public static int RunCmd(string command) + public void RunCmd(string command, string workingDirectory = null) + { + RunCmd(command, out _, workingDirectory); + } + + public void RunCmd(string command, out int exitCode, string workingDirectory = null) { var procStartInfo = new ProcessStartInfo( GetFileName(), GetArguments(command) ); + if (!string.IsNullOrEmpty(workingDirectory)) + { + procStartInfo.WorkingDirectory = workingDirectory; + } + using (var process = Process.Start(procStartInfo)) { process?.WaitForExit(); - return process?.ExitCode ?? 0; + + exitCode = process.ExitCode; } } - public static string RunCmdAndGetOutput(string command) + public string RunCmdAndGetOutput(string command, string workingDirectory = null) { - return RunCmdAndGetOutput(command, out int _); + return RunCmdAndGetOutput(command, out int _, workingDirectory); } - public static string RunCmdAndGetOutput(string command, out bool isExitCodeSuccessful) + public string RunCmdAndGetOutput(string command, out bool isExitCodeSuccessful, string workingDirectory = null) { - var output = RunCmdAndGetOutput(command, out int exitCode); + var output = RunCmdAndGetOutput(command, out int exitCode, workingDirectory); isExitCodeSuccessful = exitCode == SuccessfulExitCode; return output; } - public static string RunCmdAndGetOutput(string command, out int exitCode) + public string RunCmdAndGetOutput(string command, out int exitCode, string workingDirectory = null) { string output; using (var process = new Process()) { - process.StartInfo = new ProcessStartInfo(CmdHelper.GetFileName()) + process.StartInfo = new ProcessStartInfo(GetFileName()) { Arguments = GetArguments(command), UseShellExecute = false, @@ -72,6 +85,11 @@ namespace Volo.Abp.Cli.Utils RedirectStandardError = true }; + if (!string.IsNullOrEmpty(workingDirectory)) + { + process.StartInfo.WorkingDirectory = workingDirectory; + } + process.Start(); using (var standardOutput = process.StandardOutput) @@ -91,7 +109,7 @@ namespace Volo.Abp.Cli.Utils return output.Trim(); } - public static string GetArguments(string command) + public string GetArguments(string command) { if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { @@ -102,7 +120,7 @@ namespace Volo.Abp.Cli.Utils return "/C \"" + command + "\""; } - public static string GetFileName() + public string GetFileName() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs new file mode 100644 index 0000000000..15234c2c82 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs @@ -0,0 +1,24 @@ +namespace Volo.Abp.Cli.Utils +{ + public interface ICmdHelper + { + void OpenWebPage(string url); + + void Run(string file, string arguments); + + string GetArguments(string command); + + string GetFileName(); + + void RunCmd(string command, string workingDirectory = null); + + void RunCmd(string command, out int exitCode, string workingDirectory = null); + + string RunCmdAndGetOutput(string command, string workingDirectory = null); + + + string RunCmdAndGetOutput(string command, out bool isExitCodeSuccessful, string workingDirectory = null); + + string RunCmdAndGetOutput(string command, out int exitCode, string workingDirectory = null); + } +} diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs index a1557e68ce..d346ce6227 100644 --- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs +++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs @@ -38,14 +38,6 @@ namespace Volo.Abp.Cli } } - [Fact] - public async Task Parent_Directory_Char_Contains_Test() - { - - var args = new CommandLineArgs("new", "Test..Test"); - await _newCommand.ExecuteAsync(args).ShouldThrowAsync(); - } - [Fact] public async Task Contains_Illegal_Keyword_Test() { diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs index eb4a9eda24..20e870dfe9 100644 --- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs +++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs @@ -36,7 +36,7 @@ namespace Volo.Abp.Cli "" + ""; - var success = SolutionAbpVersionFinder.TryParseVersionFromCsprojFile(csprojContent, out var version); + var success = SolutionPackageVersionFinder.TryParseVersionFromCsprojFile(csprojContent, out var version); success.ShouldBe(true); version.ShouldBe("4.4.0-rc.1"); } @@ -58,7 +58,7 @@ namespace Volo.Abp.Cli "" + ""; - var success = SolutionAbpVersionFinder.TryParseSemanticVersionFromCsprojFile(csprojContent, out var version); + var success = SolutionPackageVersionFinder.TryParseSemanticVersionFromCsprojFile(csprojContent, out var version); success.ShouldBe(true); version.Major.ShouldBe(12); version.Minor.ShouldBe(8); diff --git a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/HybridTemplateRendererProvider_Tests.cs b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/HybridTemplateRendererProvider_Tests.cs index f6fffc89a7..2d00ee87d8 100644 --- a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/HybridTemplateRendererProvider_Tests.cs +++ b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/HybridTemplateRendererProvider_Tests.cs @@ -1,5 +1,6 @@ using System.Threading.Tasks; using Shouldly; +using Volo.Abp.Localization; using Xunit; namespace Volo.Abp.TextTemplating @@ -16,25 +17,31 @@ namespace Volo.Abp.TextTemplating [Fact] public async Task Should_Render_By_Scriban() { - (await _templateRenderer.RenderAsync( - TestTemplates.HybridTemplateScriban, - model: new - { - name = "John" - } - )).ShouldBe("Hello John, how are you?"); + using (CultureHelper.Use("en")) + { + (await _templateRenderer.RenderAsync( + TestTemplates.HybridTemplateScriban, + model: new + { + name = "John" + } + )).ShouldBe("Hello John, how are you?"); + } } [Fact] public async Task Should_Render_By_Razor() { - (await _templateRenderer.RenderAsync( - TestTemplates.HybridTemplateRazor, - model: new HybridModel - { - Name = "John" - } - )).ShouldBe("Hello John, how are you?"); + using (CultureHelper.Use("en")) + { + (await _templateRenderer.RenderAsync( + TestTemplates.HybridTemplateRazor, + model: new HybridModel + { + Name = "John" + } + )).ShouldBe("Hello John, how are you?"); + } } public class HybridModel diff --git a/modules/account/Volo.Abp.Account.sln b/modules/account/Volo.Abp.Account.sln index b96627aac9..019ed12315 100644 --- a/modules/account/Volo.Abp.Account.sln +++ b/modules/account/Volo.Abp.Account.sln @@ -23,6 +23,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Account.Applicatio EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Account.Blazor", "src\Volo.Abp.Account.Blazor\Volo.Abp.Account.Blazor.csproj", "{EE8858B3-A638-481B-8EB9-74F5E7D43D80}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Account.Installer", "src\Volo.Abp.Account.Installer\Volo.Abp.Account.Installer.csproj", "{EAAB416C-9113-486D-9B54-4DCF78FDC6AB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -61,6 +63,10 @@ Global {EE8858B3-A638-481B-8EB9-74F5E7D43D80}.Debug|Any CPU.Build.0 = Debug|Any CPU {EE8858B3-A638-481B-8EB9-74F5E7D43D80}.Release|Any CPU.ActiveCfg = Release|Any CPU {EE8858B3-A638-481B-8EB9-74F5E7D43D80}.Release|Any CPU.Build.0 = Release|Any CPU + {EAAB416C-9113-486D-9B54-4DCF78FDC6AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EAAB416C-9113-486D-9B54-4DCF78FDC6AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EAAB416C-9113-486D-9B54-4DCF78FDC6AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EAAB416C-9113-486D-9B54-4DCF78FDC6AB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -74,6 +80,7 @@ Global {7BCA5955-B3F6-41E8-9D5D-D115195C6098} = {B5881429-EFF7-4F30-8C0B-0AC41E36B74E} {356EAC51-5D55-4852-A8A5-2F90EAC8DAE3} = {12FAE513-7575-4235-89DF-277BA1A3B098} {EE8858B3-A638-481B-8EB9-74F5E7D43D80} = {B5881429-EFF7-4F30-8C0B-0AC41E36B74E} + {EAAB416C-9113-486D-9B54-4DCF78FDC6AB} = {B5881429-EFF7-4F30-8C0B-0AC41E36B74E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {2B054393-D2B2-4EA8-8A15-D60CBCF3E7A9} diff --git a/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xml b/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xsd b/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Installer/Volo.Abp.Account.Installer.csproj b/modules/account/src/Volo.Abp.Account.Installer/Volo.Abp.Account.Installer.csproj new file mode 100644 index 0000000000..73df3c03d9 --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Installer/Volo.Abp.Account.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AbpAccountInstallerModule.cs b/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AbpAccountInstallerModule.cs new file mode 100644 index 0000000000..b1569eac6a --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AbpAccountInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.Account +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpAccountInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AccountInstallerPipelineBuilder.cs b/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AccountInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..29f7a147da --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AccountInstallerPipelineBuilder.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.Account +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class AccountInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + return GetBasePipeline(context); + } + } +} diff --git a/modules/audit-logging/Volo.Abp.AuditLogging.sln b/modules/audit-logging/Volo.Abp.AuditLogging.sln index 747abf454a..02c68f1ee4 100644 --- a/modules/audit-logging/Volo.Abp.AuditLogging.sln +++ b/modules/audit-logging/Volo.Abp.AuditLogging.sln @@ -23,6 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AuditLogging.Entit EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AuditLogging.MongoDB.Tests", "test\Volo.Abp.AuditLogging.MongoDB.Tests\Volo.Abp.AuditLogging.MongoDB.Tests.csproj", "{9F04C908-F4B9-45B4-BB9A-26A1462D4D7F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AuditLogging.Installer", "src\Volo.Abp.AuditLogging.Installer\Volo.Abp.AuditLogging.Installer.csproj", "{E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -61,6 +63,10 @@ Global {9F04C908-F4B9-45B4-BB9A-26A1462D4D7F}.Debug|Any CPU.Build.0 = Debug|Any CPU {9F04C908-F4B9-45B4-BB9A-26A1462D4D7F}.Release|Any CPU.ActiveCfg = Release|Any CPU {9F04C908-F4B9-45B4-BB9A-26A1462D4D7F}.Release|Any CPU.Build.0 = Release|Any CPU + {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -74,6 +80,7 @@ Global {6CDB588F-B5FD-4F2A-9599-49ACE2D7AF83} = {971E31E2-FC37-41D3-8B6E-96848105C446} {CBED3E11-0A33-4B56-A75C-A57D25C98C38} = {971E31E2-FC37-41D3-8B6E-96848105C446} {9F04C908-F4B9-45B4-BB9A-26A1462D4D7F} = {971E31E2-FC37-41D3-8B6E-96848105C446} + {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA} = {CFAB155F-5255-4D99-94E2-3361D8EA4B15} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {9F36BAE5-A9CF-460C-8E7E-4580347F71F6} diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xml b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xsd b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo.Abp.AuditLogging.Installer.csproj b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo.Abp.AuditLogging.Installer.csproj new file mode 100644 index 0000000000..27ab25e369 --- /dev/null +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo.Abp.AuditLogging.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AbpAuditLoggingInstallerModule.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AbpAuditLoggingInstallerModule.cs new file mode 100644 index 0000000000..d634e7aa60 --- /dev/null +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AbpAuditLoggingInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.AuditLogging +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpAuditLoggingInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AuditLoggingInstallerPipelineBuilder.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AuditLoggingInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..ad0128c639 --- /dev/null +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AuditLoggingInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.AuditLogging +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class AuditLoggingInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.AuditLogging.EntityFrameworkCore", + "ConfigureAuditLogging" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/background-jobs/Volo.Abp.BackgroundJobs.sln b/modules/background-jobs/Volo.Abp.BackgroundJobs.sln index 771eb08b19..2b2d8620a6 100644 --- a/modules/background-jobs/Volo.Abp.BackgroundJobs.sln +++ b/modules/background-jobs/Volo.Abp.BackgroundJobs.sln @@ -35,6 +35,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BackgroundJobs.Dem EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BackgroundJobs.DemoApp.Quartz", "app\Volo.Abp.BackgroundJobs.DemoApp.Quartz\Volo.Abp.BackgroundJobs.DemoApp.Quartz.csproj", "{0146891D-3FF8-4516-94D6-B9EFC37383CD}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BackgroundJobs.Installer", "src\Volo.Abp.BackgroundJobs.Installer\Volo.Abp.BackgroundJobs.Installer.csproj", "{FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -93,6 +95,10 @@ Global {0146891D-3FF8-4516-94D6-B9EFC37383CD}.Debug|Any CPU.Build.0 = Debug|Any CPU {0146891D-3FF8-4516-94D6-B9EFC37383CD}.Release|Any CPU.ActiveCfg = Release|Any CPU {0146891D-3FF8-4516-94D6-B9EFC37383CD}.Release|Any CPU.Build.0 = Release|Any CPU + {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -111,6 +117,7 @@ Global {2060AC85-2598-4342-A87C-A684A2C71A37} = {E400416D-2895-4512-9D17-90681EEC7E0A} {7C8D03F7-165E-478C-A6D6-DC8229EEABB9} = {E400416D-2895-4512-9D17-90681EEC7E0A} {0146891D-3FF8-4516-94D6-B9EFC37383CD} = {E400416D-2895-4512-9D17-90681EEC7E0A} + {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xml b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xsd b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo.Abp.BackgroundJobs.Installer.csproj b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo.Abp.BackgroundJobs.Installer.csproj new file mode 100644 index 0000000000..59bd54205d --- /dev/null +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo.Abp.BackgroundJobs.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/AbpBackgroundJobsInstallerModule.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/AbpBackgroundJobsInstallerModule.cs new file mode 100644 index 0000000000..fb1bcf4014 --- /dev/null +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/AbpBackgroundJobsInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.BackgroundJobs +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpBackgroundJobsInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/BackgroundJobsInstallerPipelineBuilder.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/BackgroundJobsInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..8011bd2272 --- /dev/null +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/BackgroundJobsInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.BackgroundJobs +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class BackgroundJobsInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.BackgroundJobs.EntityFrameworkCore", + "ConfigureBackgroundJobs" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/basic-theme/Volo.Abp.BasicTheme.abpmdl.json b/modules/basic-theme/Volo.Abp.BasicTheme.abpmdl.json new file mode 100644 index 0000000000..23dcc2e243 --- /dev/null +++ b/modules/basic-theme/Volo.Abp.BasicTheme.abpmdl.json @@ -0,0 +1,38 @@ +{ + "folders": { + "items": { + "src": {}, + "test": {} + } + }, + "packages": { + "Volo.Abp.AspNetCore.Components.Server.BasicTheme": { + "path": "src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.json", + "folder": "src" + }, + "Volo.Abp.AspNetCore.Components.Web.BasicTheme": { + "path": "src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.json", + "folder": "src" + }, + "Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme": { + "path": "src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.abppkg.json", + "folder": "src" + }, + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic": { + "path": "src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.abppkg.json", + "folder": "src" + }, + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo": { + "path": "test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.abppkg.json", + "folder": "test" + }, + "Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo": { + "path": "test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.abppkg.json", + "folder": "test" + }, + "Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests": { + "path": "test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.abppkg.json", + "folder": "test" + } + } +} \ No newline at end of file diff --git a/modules/basic-theme/Volo.Abp.BasicTheme.abpsln.json b/modules/basic-theme/Volo.Abp.BasicTheme.abpsln.json new file mode 100644 index 0000000000..97199e5fa6 --- /dev/null +++ b/modules/basic-theme/Volo.Abp.BasicTheme.abpsln.json @@ -0,0 +1,7 @@ +{ + "modules": { + "Volo.Abp.BasicTheme": { + "path": "Volo.Abp.BasicTheme.abpmdl.json" + } + } +} \ No newline at end of file diff --git a/modules/basic-theme/Volo.Abp.BasicTheme.sln b/modules/basic-theme/Volo.Abp.BasicTheme.sln index 3c5add1f6f..2e65f7a98d 100644 --- a/modules/basic-theme/Volo.Abp.BasicTheme.sln +++ b/modules/basic-theme/Volo.Abp.BasicTheme.sln @@ -18,6 +18,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.UI. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests", "test\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj", "{8C336CB8-F7A9-4203-AE55-D8F5FDB2A958}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BasicTheme.Installer", "src\Volo.Abp.BasicTheme.Installer\Volo.Abp.BasicTheme.Installer.csproj", "{3068A87F-3348-4981-8241-2630BC496117}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -52,6 +54,10 @@ Global {8C336CB8-F7A9-4203-AE55-D8F5FDB2A958}.Debug|Any CPU.Build.0 = Debug|Any CPU {8C336CB8-F7A9-4203-AE55-D8F5FDB2A958}.Release|Any CPU.ActiveCfg = Release|Any CPU {8C336CB8-F7A9-4203-AE55-D8F5FDB2A958}.Release|Any CPU.Build.0 = Release|Any CPU + {3068A87F-3348-4981-8241-2630BC496117}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3068A87F-3348-4981-8241-2630BC496117}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3068A87F-3348-4981-8241-2630BC496117}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3068A87F-3348-4981-8241-2630BC496117}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {C8068E7F-4A04-4755-8976-C2A4C0ADC708} = {ED6D078F-B0A2-48E8-A09D-3B7CDF6CE3D1} @@ -61,5 +67,6 @@ Global {7DFA95DB-F3A1-4883-AB03-9B02E540A134} = {0BC55E3B-4964-48E3-A390-2ADD37980149} {51B491ED-F959-4974-A876-528B5F16BC92} = {0BC55E3B-4964-48E3-A390-2ADD37980149} {8C336CB8-F7A9-4203-AE55-D8F5FDB2A958} = {0BC55E3B-4964-48E3-A390-2ADD37980149} + {3068A87F-3348-4981-8241-2630BC496117} = {ED6D078F-B0A2-48E8-A09D-3B7CDF6CE3D1} EndGlobalSection EndGlobal diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.json b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.json b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.abppkg.json b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.abppkg.json b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xml b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xsd b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo.Abp.BasicTheme.Installer.csproj b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo.Abp.BasicTheme.Installer.csproj new file mode 100644 index 0000000000..8a4b219092 --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo.Abp.BasicTheme.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/AbpBasicThemeInstallerModule.cs b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/AbpBasicThemeInstallerModule.cs new file mode 100644 index 0000000000..6339bb05be --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/AbpBasicThemeInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.BasicTheme +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpBasicThemeInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/BasicThemeInstallerPipelineBuilder.cs b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/BasicThemeInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..e90238130b --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/BasicThemeInstallerPipelineBuilder.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.BasicTheme +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class BasicThemeInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + return GetBasePipeline(context); + } + } +} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.abppkg.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.abppkg.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.abppkg.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/blob-storing-database/Volo.Abp.BlobStoring.Database.sln b/modules/blob-storing-database/Volo.Abp.BlobStoring.Database.sln index e33e90fa86..e0644dd332 100644 --- a/modules/blob-storing-database/Volo.Abp.BlobStoring.Database.sln +++ b/modules/blob-storing-database/Volo.Abp.BlobStoring.Database.sln @@ -27,6 +27,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{9E416AD3-1 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlobStoring.Database.Host.ConsoleApp.ConsoleApp", "host\BlobStoring.Database.Host.ConsoleApp\src\BlobStoring.Database.Host.ConsoleApp.ConsoleApp\BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj", "{C3C4CB94-4F73-4D04-9076-8D98D5C6B475}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Database.Installer", "src\Volo.Abp.BlobStoring.Database.Installer\Volo.Abp.BlobStoring.Database.Installer.csproj", "{6181012D-3CBA-4825-B8A5-FD8926AE5661}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -69,6 +71,10 @@ Global {C3C4CB94-4F73-4D04-9076-8D98D5C6B475}.Debug|Any CPU.Build.0 = Debug|Any CPU {C3C4CB94-4F73-4D04-9076-8D98D5C6B475}.Release|Any CPU.ActiveCfg = Release|Any CPU {C3C4CB94-4F73-4D04-9076-8D98D5C6B475}.Release|Any CPU.Build.0 = Release|Any CPU + {6181012D-3CBA-4825-B8A5-FD8926AE5661}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6181012D-3CBA-4825-B8A5-FD8926AE5661}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6181012D-3CBA-4825-B8A5-FD8926AE5661}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6181012D-3CBA-4825-B8A5-FD8926AE5661}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -83,6 +89,7 @@ Global {D0AD9179-125C-40B2-A8EE-CD4C1EE24BB6} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} {E60895E5-79C4-447D-88B7-85CB5BA336A4} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} {C3C4CB94-4F73-4D04-9076-8D98D5C6B475} = {9E416AD3-1EC8-439A-9CFD-AAFFA89E2AEB} + {6181012D-3CBA-4825-B8A5-FD8926AE5661} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xml b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xsd b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.csproj b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.csproj new file mode 100644 index 0000000000..a2054f574c --- /dev/null +++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/AbpBlobStoringDatabaseInstallerModule.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/AbpBlobStoringDatabaseInstallerModule.cs new file mode 100644 index 0000000000..9ee224e4f4 --- /dev/null +++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/AbpBlobStoringDatabaseInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.BlobStoring.Database +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpBlobStoringDatabaseInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseInstallerPipelineBuilder.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..ea82db0c8c --- /dev/null +++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.BlobStoring.Database +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class BlobStoringDatabaseInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.BlobStoring.Database.EntityFrameworkCore", + "ConfigureBlobStoring" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/cms-kit/Volo.CmsKit.abpmdl.json b/modules/cms-kit/Volo.CmsKit.abpmdl.json new file mode 100644 index 0000000000..0c9b971493 --- /dev/null +++ b/modules/cms-kit/Volo.CmsKit.abpmdl.json @@ -0,0 +1,155 @@ +{ + "folders": { + "items": { + "src": {}, + "test": {}, + "host": {} + } + }, + "packages": { + "Volo.CmsKit.Domain.Shared": { + "path": "src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Domain": { + "path": "src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Application.Contracts": { + "path": "src/Volo.CmsKit.Application.Contracts/Volo.CmsKit.Application.Contracts.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Application": { + "path": "src/Volo.CmsKit.Application/Volo.CmsKit.Application.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.EntityFrameworkCore": { + "path": "src/Volo.CmsKit.EntityFrameworkCore/Volo.CmsKit.EntityFrameworkCore.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.MongoDB": { + "path": "src/Volo.CmsKit.MongoDB/Volo.CmsKit.MongoDB.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.HttpApi": { + "path": "src/Volo.CmsKit.HttpApi/Volo.CmsKit.HttpApi.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.HttpApi.Client": { + "path": "src/Volo.CmsKit.HttpApi.Client/Volo.CmsKit.HttpApi.Client.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.TestBase": { + "path": "test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.abppkg.json", + "folder": "test" + }, + "Volo.CmsKit.EntityFrameworkCore.Tests": { + "path": "test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.abppkg.json", + "folder": "test" + }, + "Volo.CmsKit.MongoDB.Tests": { + "path": "test/Volo.CmsKit.MongoDB.Tests/Volo.CmsKit.MongoDB.Tests.abppkg.json", + "folder": "test" + }, + "Volo.CmsKit.Domain.Tests": { + "path": "test/Volo.CmsKit.Domain.Tests/Volo.CmsKit.Domain.Tests.abppkg.json", + "folder": "test" + }, + "Volo.CmsKit.Application.Tests": { + "path": "test/Volo.CmsKit.Application.Tests/Volo.CmsKit.Application.Tests.abppkg.json", + "folder": "test" + }, + "Volo.CmsKit.HttpApi.Host": { + "path": "host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.abppkg.json", + "folder": "host" + }, + "Volo.CmsKit.Web": { + "path": "src/Volo.CmsKit.Web/Volo.CmsKit.Web.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.HttpApi.Client.ConsoleTestApp": { + "path": "test/Volo.CmsKit.HttpApi.Client.ConsoleTestApp/Volo.CmsKit.HttpApi.Client.ConsoleTestApp.abppkg.json", + "folder": "test" + }, + "Volo.CmsKit.Web.Host": { + "path": "host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.abppkg.json", + "folder": "host" + }, + "Volo.CmsKit.IdentityServer": { + "path": "host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.abppkg.json", + "folder": "host" + }, + "Volo.CmsKit.Host.Shared": { + "path": "host/Volo.CmsKit.Host.Shared/Volo.CmsKit.Host.Shared.abppkg.json", + "folder": "host" + }, + "Volo.CmsKit.Web.Unified": { + "path": "host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.abppkg.json", + "folder": "host" + }, + "Volo.CmsKit.Admin.Application": { + "path": "src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Admin.Application.Contracts": { + "path": "src/Volo.CmsKit.Admin.Application.Contracts/Volo.CmsKit.Admin.Application.Contracts.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Admin.HttpApi": { + "path": "src/Volo.CmsKit.Admin.HttpApi/Volo.CmsKit.Admin.HttpApi.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Admin.HttpApi.Client": { + "path": "src/Volo.CmsKit.Admin.HttpApi.Client/Volo.CmsKit.Admin.HttpApi.Client.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Admin.Web": { + "path": "src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Public.Application": { + "path": "src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Public.Application.Contracts": { + "path": "src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Public.HttpApi": { + "path": "src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Public.HttpApi.Client": { + "path": "src/Volo.CmsKit.Public.HttpApi.Client/Volo.CmsKit.Public.HttpApi.Client.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Public.Web": { + "path": "src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Common.Web": { + "path": "src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Common.Application.Contracts": { + "path": "src/Volo.CmsKit.Common.Application.Contracts/Volo.CmsKit.Common.Application.Contracts.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Common.Application": { + "path": "src/Volo.CmsKit.Common.Application/Volo.CmsKit.Common.Application.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Common.HttpApi": { + "path": "src/Volo.CmsKit.Common.HttpApi/Volo.CmsKit.Common.HttpApi.abppkg.json", + "folder": "src" + }, + "Volo.CmsKit.Common.HttpApi.Client": { + "path": "src/Volo.CmsKit.Common.HttpApi.Client/Volo.CmsKit.Common.HttpApi.Client.abppkg.json", + "folder": "src" + }, + "Volo.Abp.BlobStoring.Database.Installer": { + "path": "src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.abppkg.json", + "folder": "src" + } + } +} \ No newline at end of file diff --git a/modules/cms-kit/Volo.CmsKit.abpsln.json b/modules/cms-kit/Volo.CmsKit.abpsln.json new file mode 100644 index 0000000000..1768ec8faf --- /dev/null +++ b/modules/cms-kit/Volo.CmsKit.abpsln.json @@ -0,0 +1,7 @@ +{ + "modules": { + "Volo.CmsKit": { + "path": "Volo.CmsKit.abpmdl.json" + } + } +} \ No newline at end of file diff --git a/modules/cms-kit/Volo.CmsKit.sln b/modules/cms-kit/Volo.CmsKit.sln index ddc1dd2000..080ccbcf7f 100644 --- a/modules/cms-kit/Volo.CmsKit.sln +++ b/modules/cms-kit/Volo.CmsKit.sln @@ -87,6 +87,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.HttpApi" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.HttpApi.Client", "src\Volo.CmsKit.Common.HttpApi.Client\Volo.CmsKit.Common.HttpApi.Client.csproj", "{EC98F006-2002-4CE2-AA62-5EBB589ACD79}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Installer", "src\Volo.CmsKit.Installer\Volo.CmsKit.Installer.csproj", "{908C157E-2352-4373-BF5D-E5DA19913390}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -233,6 +235,10 @@ Global {EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Debug|Any CPU.Build.0 = Debug|Any CPU {EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Release|Any CPU.ActiveCfg = Release|Any CPU {EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Release|Any CPU.Build.0 = Release|Any CPU + {908C157E-2352-4373-BF5D-E5DA19913390}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {908C157E-2352-4373-BF5D-E5DA19913390}.Debug|Any CPU.Build.0 = Debug|Any CPU + {908C157E-2352-4373-BF5D-E5DA19913390}.Release|Any CPU.ActiveCfg = Release|Any CPU + {908C157E-2352-4373-BF5D-E5DA19913390}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -277,6 +283,7 @@ Global {5D9BD65D-353E-4618-BE49-E1DF4CFF2393} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1} {E8CC280A-D049-4564-9C71-2F5657C17937} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1} {EC98F006-2002-4CE2-AA62-5EBB589ACD79} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1} + {908C157E-2352-4373-BF5D-E5DA19913390} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} diff --git a/modules/cms-kit/host/Volo.CmsKit.Host.Shared/Volo.CmsKit.Host.Shared.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.Host.Shared/Volo.CmsKit.Host.Shared.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.Host.Shared/Volo.CmsKit.Host.Shared.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.abppkg.json new file mode 100644 index 0000000000..35f3cbe53c --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "host.http-api" +} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.abppkg.json new file mode 100644 index 0000000000..48875c29cf --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "host.mvc" +} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo.CmsKit.Admin.Application.Contracts.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo.CmsKit.Admin.Application.Contracts.abppkg.json new file mode 100644 index 0000000000..49032794e2 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo.CmsKit.Admin.Application.Contracts.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application-contracts" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.json new file mode 100644 index 0000000000..412567ac33 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/Volo.CmsKit.Admin.HttpApi.Client.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/Volo.CmsKit.Admin.HttpApi.Client.abppkg.json new file mode 100644 index 0000000000..7deef5e383 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/Volo.CmsKit.Admin.HttpApi.Client.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api-client" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo.CmsKit.Admin.HttpApi.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo.CmsKit.Admin.HttpApi.abppkg.json new file mode 100644 index 0000000000..515bfe64c4 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo.CmsKit.Admin.HttpApi.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.json new file mode 100644 index 0000000000..930c4018b3 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mvc" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Application.Contracts/Volo.CmsKit.Application.Contracts.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Application.Contracts/Volo.CmsKit.Application.Contracts.abppkg.json new file mode 100644 index 0000000000..49032794e2 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Application.Contracts/Volo.CmsKit.Application.Contracts.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application-contracts" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Application/Volo.CmsKit.Application.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Application/Volo.CmsKit.Application.abppkg.json new file mode 100644 index 0000000000..412567ac33 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Application/Volo.CmsKit.Application.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo.CmsKit.Common.Application.Contracts.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo.CmsKit.Common.Application.Contracts.abppkg.json new file mode 100644 index 0000000000..49032794e2 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo.CmsKit.Common.Application.Contracts.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application-contracts" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo.CmsKit.Common.Application.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo.CmsKit.Common.Application.abppkg.json new file mode 100644 index 0000000000..412567ac33 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo.CmsKit.Common.Application.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/Volo.CmsKit.Common.HttpApi.Client.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/Volo.CmsKit.Common.HttpApi.Client.abppkg.json new file mode 100644 index 0000000000..7deef5e383 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/Volo.CmsKit.Common.HttpApi.Client.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api-client" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi/Volo.CmsKit.Common.HttpApi.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi/Volo.CmsKit.Common.HttpApi.abppkg.json new file mode 100644 index 0000000000..515bfe64c4 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi/Volo.CmsKit.Common.HttpApi.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.abppkg.json new file mode 100644 index 0000000000..930c4018b3 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mvc" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.abppkg.json new file mode 100644 index 0000000000..8b3de05f76 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.domain-shared" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.json new file mode 100644 index 0000000000..1d574efe45 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.domain" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo.CmsKit.EntityFrameworkCore.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo.CmsKit.EntityFrameworkCore.abppkg.json new file mode 100644 index 0000000000..e1c64f0175 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo.CmsKit.EntityFrameworkCore.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.ef" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.HttpApi.Client/Volo.CmsKit.HttpApi.Client.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.HttpApi.Client/Volo.CmsKit.HttpApi.Client.abppkg.json new file mode 100644 index 0000000000..7deef5e383 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.HttpApi.Client/Volo.CmsKit.HttpApi.Client.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api-client" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.HttpApi/Volo.CmsKit.HttpApi.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.HttpApi/Volo.CmsKit.HttpApi.abppkg.json new file mode 100644 index 0000000000..515bfe64c4 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.HttpApi/Volo.CmsKit.HttpApi.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xml b/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xsd b/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.Abp.BlobStoring.Database.Installer.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.Abp.BlobStoring.Database.Installer.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.Abp.BlobStoring.Database.Installer.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.CmsKit.Installer.csproj b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.CmsKit.Installer.csproj new file mode 100644 index 0000000000..4ed4ae03fa --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.CmsKit.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/AbpCmsKitInstallerModule.cs b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/AbpCmsKitInstallerModule.cs new file mode 100644 index 0000000000..3b0d976f2a --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/AbpCmsKitInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.CmsKit +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class VoloCmsKitDatabaseInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/CmsKitInstallerPipelineBuilder.cs b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/CmsKitInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..a9333b3d5c --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/CmsKitInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.CmsKit +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class BlobStoringDatabaseInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.CmsKit.EntityFrameworkCore", + "ConfigureCmsKit" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo.CmsKit.MongoDB.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo.CmsKit.MongoDB.abppkg.json new file mode 100644 index 0000000000..8b23fd1e69 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo.CmsKit.MongoDB.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mongodb" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.abppkg.json new file mode 100644 index 0000000000..49032794e2 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application-contracts" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.abppkg.json new file mode 100644 index 0000000000..412567ac33 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/Volo.CmsKit.Public.HttpApi.Client.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/Volo.CmsKit.Public.HttpApi.Client.abppkg.json new file mode 100644 index 0000000000..7deef5e383 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/Volo.CmsKit.Public.HttpApi.Client.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api-client" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.abppkg.json new file mode 100644 index 0000000000..515bfe64c4 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.abppkg.json new file mode 100644 index 0000000000..930c4018b3 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mvc" +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.abppkg.json new file mode 100644 index 0000000000..930c4018b3 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mvc" +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Volo.CmsKit.Application.Tests.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Volo.CmsKit.Application.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Volo.CmsKit.Application.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Volo.CmsKit.Domain.Tests.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Volo.CmsKit.Domain.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Volo.CmsKit.Domain.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.HttpApi.Client.ConsoleTestApp/Volo.CmsKit.HttpApi.Client.ConsoleTestApp.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.HttpApi.Client.ConsoleTestApp/Volo.CmsKit.HttpApi.Client.ConsoleTestApp.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.HttpApi.Client.ConsoleTestApp/Volo.CmsKit.HttpApi.Client.ConsoleTestApp.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/Volo.CmsKit.MongoDB.Tests.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/Volo.CmsKit.MongoDB.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/Volo.CmsKit.MongoDB.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/feature-management/Volo.Abp.FeatureManagement.sln b/modules/feature-management/Volo.Abp.FeatureManagement.sln index 11e32bd6e7..85a1db61a3 100644 --- a/modules/feature-management/Volo.Abp.FeatureManagement.sln +++ b/modules/feature-management/Volo.Abp.FeatureManagement.sln @@ -41,6 +41,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.FeatureManagement. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.FeatureManagement.Blazor.WebAssembly", "src\Volo.Abp.FeatureManagement.Blazor.WebAssembly\Volo.Abp.FeatureManagement.Blazor.WebAssembly.csproj", "{A96771F7-65D7-43C2-818E-CF0F5DBC3DC6}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.FeatureManagement.Installer", "src\Volo.Abp.FeatureManagement.Installer\Volo.Abp.FeatureManagement.Installer.csproj", "{0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -115,6 +117,10 @@ Global {A96771F7-65D7-43C2-818E-CF0F5DBC3DC6}.Debug|Any CPU.Build.0 = Debug|Any CPU {A96771F7-65D7-43C2-818E-CF0F5DBC3DC6}.Release|Any CPU.ActiveCfg = Release|Any CPU {A96771F7-65D7-43C2-818E-CF0F5DBC3DC6}.Release|Any CPU.Build.0 = Release|Any CPU + {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -137,6 +143,7 @@ Global {0F34FFD5-E98F-4F77-AE0B-A790BD5810D5} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} {5B2EA81B-9FAE-456E-B83B-58205AA48752} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} {A96771F7-65D7-43C2-818E-CF0F5DBC3DC6} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xml b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xsd b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo.Abp.FeatureManagement.Installer.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo.Abp.FeatureManagement.Installer.csproj new file mode 100644 index 0000000000..de78fd2a68 --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo.Abp.FeatureManagement.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/AbpFeatureManagementInstallerModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/AbpFeatureManagementInstallerModule.cs new file mode 100644 index 0000000000..da0b5836ff --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/AbpFeatureManagementInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.FeatureManagement +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpFeatureManagementInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/FeatureManagementInstallerPipelineBuilder.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/FeatureManagementInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..335b770edd --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/FeatureManagementInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.FeatureManagement +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class FeatureManagementInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.FeatureManagement.EntityFrameworkCore", + "ConfigureFeatureManagement" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.abppkg.analyze.json new file mode 100644 index 0000000000..f5c9f5f12e --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.abppkg.analyze.json @@ -0,0 +1,11 @@ +{ + "name": "Volo.Abp.Identity.Application.Contracts", + "hash": "7d48962330d53c649b5db86b7e77bce9", + "contents": [ + { + "namespace": "Volo.Abp.Identity", + "contentType": "abpModule", + "name": "AbpIdentityApplicationContractsModule" + } + ] +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj index e6241c927d..5beb6a2668 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj @@ -21,4 +21,14 @@ + + + + true + Never + + + + + diff --git a/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.abppkg.analyze.json new file mode 100644 index 0000000000..56179082c7 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.abppkg.analyze.json @@ -0,0 +1,127 @@ +{ + "name": "Volo.Abp.Identity.Application", + "hash": "4e28f54b13b3299ac1f5ee664729ec40", + "contents": [ + { + "namespace": "Volo.Abp.Identity", + "contentType": "abpModule", + "name": "AbpIdentityApplicationModule" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "implementingInterfaces": [ + "Volo.Abp.Identity.IIdentityRoleAppService", + "Volo.Abp.Application.Services.ICrudAppService`5[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityRolesInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.ICrudAppService`6[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityRolesInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.IReadOnlyAppService`4[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityRolesInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.ICreateUpdateAppService`4[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.ICreateAppService`2[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.IUpdateAppService`3[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.IDeleteAppService`1[[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]" + ], + "contentType": "applicationService", + "name": "IdentityRoleAppService" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "implementingInterfaces": [ + "Volo.Abp.Identity.IIdentityUserAppService", + "Volo.Abp.Application.Services.ICrudAppService`5[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.ICrudAppService`6[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.IReadOnlyAppService`4[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.ICreateUpdateAppService`4[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.ICreateAppService`2[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.IUpdateAppService`3[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]", + "Volo.Abp.Application.Services.IDeleteAppService`1[[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]" + ], + "contentType": "applicationService", + "name": "IdentityUserAppService" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "implementingInterfaces": [ + "Volo.Abp.Identity.IIdentityUserLookupAppService" + ], + "contentType": "applicationService", + "name": "IdentityUserLookupAppService" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "implementingInterfaces": [ + "Volo.Abp.Identity.IProfileAppService" + ], + "contentType": "applicationService", + "name": "ProfileAppService" + }, + { + "displayName": "Role management", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Roles" + }, + { + "displayName": "Create", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Roles.Create" + }, + { + "displayName": "Edit", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Roles.Update" + }, + { + "displayName": "Delete", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Roles.Delete" + }, + { + "displayName": "Change permissions", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Roles.ManagePermissions" + }, + { + "displayName": "User management", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Users" + }, + { + "displayName": "Create", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Users.Create" + }, + { + "displayName": "Edit", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Users.Update" + }, + { + "displayName": "Delete", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Users.Delete" + }, + { + "displayName": "Change permissions", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.Users.ManagePermissions" + }, + { + "displayName": "User lookup", + "isEnabled": true, + "contentType": "permission", + "name": "AbpIdentity.UserLookup" + } + ] +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.csproj b/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.csproj index fc01ba4400..a256285e56 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.csproj @@ -21,4 +21,14 @@ + + + + true + Never + + + + + diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.abppkg.analyze.json new file mode 100644 index 0000000000..eae6233b7e --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.abppkg.analyze.json @@ -0,0 +1,11 @@ +{ + "name": "Volo.Abp.Identity.Domain.Shared", + "hash": "7db38ac2a2f335158964c4d06d0dfaab", + "contents": [ + { + "namespace": "Volo.Abp.Identity", + "contentType": "abpModule", + "name": "AbpIdentityDomainSharedModule" + } + ] +} \ No newline at end of file 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..ddc85df885 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 @@ -18,6 +18,13 @@ + + + true + Never + + + diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.abppkg.analyze.json new file mode 100644 index 0000000000..4011e6d04b --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.abppkg.analyze.json @@ -0,0 +1,205 @@ +{ + "name": "Volo.Abp.Identity.Domain", + "hash": "7736ef4a79faf05ed7e6097700d560ce", + "contents": [ + { + "namespace": "Volo.Abp.Identity", + "contentType": "abpModule", + "name": "AbpIdentityDomainModule" + }, + { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": null, + "collectionProperties": [], + "navigationProperties": [], + "contentType": "aggregateRoot", + "name": "IdentityClaimType" + }, + { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": null, + "collectionProperties": [], + "navigationProperties": [], + "contentType": "aggregateRoot", + "name": "IdentityLinkUser" + }, + { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": "Represents a role in the identity system", + "collectionProperties": [ + "Volo.Abp.Identity.IdentityRoleClaim" + ], + "navigationProperties": [], + "contentType": "aggregateRoot", + "name": "IdentityRole" + }, + { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": null, + "collectionProperties": [], + "navigationProperties": [], + "contentType": "aggregateRoot", + "name": "IdentitySecurityLog" + }, + { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": null, + "collectionProperties": [ + "Volo.Abp.Identity.IdentityUserRole", + "Volo.Abp.Identity.IdentityUserClaim", + "Volo.Abp.Identity.IdentityUserLogin", + "Volo.Abp.Identity.IdentityUserToken", + "Volo.Abp.Identity.IdentityUserOrganizationUnit" + ], + "navigationProperties": [], + "contentType": "aggregateRoot", + "name": "IdentityUser" + }, + { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": "Represents an organization unit (OU).", + "collectionProperties": [ + "Volo.Abp.Identity.OrganizationUnitRole" + ], + "navigationProperties": [], + "contentType": "aggregateRoot", + "name": "OrganizationUnit" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "contentType": "domainService", + "name": "IdentityClaimTypeManager" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "contentType": "domainService", + "name": "IdentityRoleManager" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "contentType": "domainService", + "name": "IdentityLinkUserManager" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "contentType": "domainService", + "name": "IdentityUserManager" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": "Performs domain logic for Organization Units.", + "contentType": "domainService", + "name": "OrganizationUnitManager" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "entityModel": { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": null, + "collectionProperties": [], + "navigationProperties": [], + "contentType": "entity", + "name": "IdentityClaimType" + }, + "contentType": "repositoryInterface", + "name": "IIdentityClaimTypeRepository" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "entityModel": { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": null, + "collectionProperties": [], + "navigationProperties": [], + "contentType": "entity", + "name": "IdentityLinkUser" + }, + "contentType": "repositoryInterface", + "name": "IIdentityLinkUserRepository" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "entityModel": { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": "Represents a role in the identity system", + "collectionProperties": [ + "Volo.Abp.Identity.IdentityRoleClaim" + ], + "navigationProperties": [], + "contentType": "entity", + "name": "IdentityRole" + }, + "contentType": "repositoryInterface", + "name": "IIdentityRoleRepository" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "entityModel": { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": null, + "collectionProperties": [], + "navigationProperties": [], + "contentType": "entity", + "name": "IdentitySecurityLog" + }, + "contentType": "repositoryInterface", + "name": "IIdentitySecurityLogRepository" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "entityModel": { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": null, + "collectionProperties": [ + "Volo.Abp.Identity.IdentityUserRole", + "Volo.Abp.Identity.IdentityUserClaim", + "Volo.Abp.Identity.IdentityUserLogin", + "Volo.Abp.Identity.IdentityUserToken", + "Volo.Abp.Identity.IdentityUserOrganizationUnit" + ], + "navigationProperties": [], + "contentType": "entity", + "name": "IdentityUser" + }, + "contentType": "repositoryInterface", + "name": "IIdentityUserRepository" + }, + { + "namespace": "Volo.Abp.Identity", + "summary": null, + "entityModel": { + "namespace": "Volo.Abp.Identity", + "primaryKeyType": "Guid", + "summary": "Represents an organization unit (OU).", + "collectionProperties": [ + "Volo.Abp.Identity.OrganizationUnitRole" + ], + "navigationProperties": [], + "contentType": "entity", + "name": "OrganizationUnit" + }, + "contentType": "repositoryInterface", + "name": "IOrganizationUnitRepository" + } + ] +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj index e951457688..f5f5e5f00d 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj @@ -18,6 +18,13 @@ + + + true + Never + + + diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.abppkg.analyze.json new file mode 100644 index 0000000000..0c0d76de69 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.abppkg.analyze.json @@ -0,0 +1,84 @@ +{ + "name": "Volo.Abp.Identity.EntityFrameworkCore", + "hash": "8f270f0242f12d428caba0db20954d9e", + "contents": [ + { + "namespace": "Volo.Abp.Identity.EntityFrameworkCore", + "contentType": "abpModule", + "name": "AbpIdentityEntityFrameworkCoreModule" + }, + { + "namespace": "Volo.Abp.Identity.EntityFrameworkCore", + "connectionStringName": "AbpIdentity", + "databaseTables": [ + { + "entityFullName": "Volo.Abp.Identity.IdentityClaimType", + "contentType": "databaseTable", + "name": "AbpClaimTypes" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentityLinkUser", + "contentType": "databaseTable", + "name": "AbpLinkUsers" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentityRole", + "contentType": "databaseTable", + "name": "AbpRoles" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentityRoleClaim", + "contentType": "databaseTable", + "name": "AbpRoleClaims" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentitySecurityLog", + "contentType": "databaseTable", + "name": "AbpSecurityLogs" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentityUser", + "contentType": "databaseTable", + "name": "AbpUsers" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentityUserClaim", + "contentType": "databaseTable", + "name": "AbpUserClaims" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentityUserLogin", + "contentType": "databaseTable", + "name": "AbpUserLogins" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentityUserOrganizationUnit", + "contentType": "databaseTable", + "name": "AbpUserOrganizationUnits" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentityUserRole", + "contentType": "databaseTable", + "name": "AbpUserRoles" + }, + { + "entityFullName": "Volo.Abp.Identity.IdentityUserToken", + "contentType": "databaseTable", + "name": "AbpUserTokens" + }, + { + "entityFullName": "Volo.Abp.Identity.OrganizationUnit", + "contentType": "databaseTable", + "name": "AbpOrganizationUnits" + }, + { + "entityFullName": "Volo.Abp.Identity.OrganizationUnitRole", + "contentType": "databaseTable", + "name": "AbpOrganizationUnitRoles" + } + ], + "contentType": "efCoreDbContext", + "name": "IdentityDbContext" + } + ] +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.csproj b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.csproj index 41cf02d96e..bb9b865a0d 100644 --- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.csproj +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.csproj @@ -19,4 +19,14 @@ + + + + true + Never + + + + + diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.abppkg.analyze.json new file mode 100644 index 0000000000..8853f9be01 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.abppkg.analyze.json @@ -0,0 +1,11 @@ +{ + "name": "Volo.Abp.Identity.HttpApi.Client", + "hash": "774ff4f82e3a8df910bab011545deaeb", + "contents": [ + { + "namespace": "Volo.Abp.Identity", + "contentType": "abpModule", + "name": "AbpIdentityHttpApiClientModule" + } + ] +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj index 5bff2432a7..3584a1db66 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj @@ -19,4 +19,14 @@ + + + + + + true + Never + + + diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.abppkg.analyze.json new file mode 100644 index 0000000000..3fab306b7c --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.abppkg.analyze.json @@ -0,0 +1,11 @@ +{ + "name": "Volo.Abp.Identity.HttpApi", + "hash": "ec955af18068942f6dfa1a627f4aeacd", + "contents": [ + { + "namespace": "Volo.Abp.Identity", + "contentType": "abpModule", + "name": "AbpIdentityHttpApiModule" + } + ] +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.csproj b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.csproj index 374001080d..5610c273c4 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.csproj +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.csproj @@ -21,4 +21,18 @@ + + + + true + PreserveNewest + PreserveNewest + + + + true + Never + + + diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xml b/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xsd b/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/Volo.Abp.Identity.Installer.csproj b/modules/identity/src/Volo.Abp.Identity.Installer/Volo.Abp.Identity.Installer.csproj new file mode 100644 index 0000000000..80a1b51bb0 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Installer/Volo.Abp.Identity.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/AbpIdentityInstallerModule.cs b/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/AbpIdentityInstallerModule.cs new file mode 100644 index 0000000000..23a1de23a2 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/AbpIdentityInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Studio; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.Identity +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpIdentityInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/IdentityInstallerPipelineBuilder.cs b/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/IdentityInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..8f2f75c30c --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/IdentityInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.Identity +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class IdentityInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.Identity.EntityFrameworkCore", + "ConfigureIdentity" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.abppkg.analyze.json new file mode 100644 index 0000000000..0ff75daa7f --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.abppkg.analyze.json @@ -0,0 +1,11 @@ +{ + "name": "Volo.Abp.Identity.Web", + "hash": "e8d9278c1f4324ce9c89a3045da71d43", + "contents": [ + { + "namespace": "Volo.Abp.Identity.Web", + "contentType": "abpModule", + "name": "AbpIdentityWebModule" + } + ] +} \ No newline at end of file diff --git a/modules/identityserver/Volo.Abp.IdentityServer.sln b/modules/identityserver/Volo.Abp.IdentityServer.sln index 93dd971d47..0006ded671 100644 --- a/modules/identityserver/Volo.Abp.IdentityServer.sln +++ b/modules/identityserver/Volo.Abp.IdentityServer.sln @@ -25,6 +25,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.IdentityServer.Dom EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Domain.IdentityServer", "src\Volo.Abp.PermissionManagement.Domain.IdentityServer\Volo.Abp.PermissionManagement.Domain.IdentityServer.csproj", "{072BD630-FB89-45FC-BA2D-12A9745AAB93}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.IdentityServer.Installer", "src\Volo.Abp.IdentityServer.Installer\Volo.Abp.IdentityServer.Installer.csproj", "{E8C9972C-8AA9-4E30-8290-C93FEA00D374}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -67,6 +69,10 @@ Global {072BD630-FB89-45FC-BA2D-12A9745AAB93}.Debug|Any CPU.Build.0 = Debug|Any CPU {072BD630-FB89-45FC-BA2D-12A9745AAB93}.Release|Any CPU.ActiveCfg = Release|Any CPU {072BD630-FB89-45FC-BA2D-12A9745AAB93}.Release|Any CPU.Build.0 = Release|Any CPU + {E8C9972C-8AA9-4E30-8290-C93FEA00D374}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E8C9972C-8AA9-4E30-8290-C93FEA00D374}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E8C9972C-8AA9-4E30-8290-C93FEA00D374}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E8C9972C-8AA9-4E30-8290-C93FEA00D374}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -81,6 +87,7 @@ Global {2E18B471-7FCA-497B-90FF-6AA9172CC62F} = {2C792EC1-BA27-44ED-B7CC-D0939553F1B2} {0680D0B6-51C0-4812-8A0B-192FDE717E60} = {2C792EC1-BA27-44ED-B7CC-D0939553F1B2} {072BD630-FB89-45FC-BA2D-12A9745AAB93} = {59A0FC0F-EA6D-477B-84A7-3B1E41B4C858} + {E8C9972C-8AA9-4E30-8290-C93FEA00D374} = {59A0FC0F-EA6D-477B-84A7-3B1E41B4C858} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {45562023-C330-4060-A583-2BA10F472D3D} diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.abppkg.analyze.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.abppkg.analyze.json new file mode 100644 index 0000000000..504cacafca --- /dev/null +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.abppkg.analyze.json @@ -0,0 +1,11 @@ +{ + "name": "Volo.Abp.IdentityServer.Domain.Shared", + "hash": "ce5c24d589a663bc543a334b6a98de00", + "contents": [ + { + "namespace": "Volo.Abp.IdentityServer", + "contentType": "abpModule", + "name": "AbpIdentityServerDomainSharedModule" + } + ] +} \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo.Abp.IdentityServer.EntityFrameworkCore.abppkg.analyze.json b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo.Abp.IdentityServer.EntityFrameworkCore.abppkg.analyze.json new file mode 100644 index 0000000000..c10e3143b8 --- /dev/null +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo.Abp.IdentityServer.EntityFrameworkCore.abppkg.analyze.json @@ -0,0 +1,11 @@ +{ + "name": "Volo.Abp.IdentityServer.EntityFrameworkCore", + "hash": "034f1be234bf02cb8e782935c47c0eeb", + "contents": [ + { + "namespace": "Volo.Abp.IdentityServer.EntityFrameworkCore", + "contentType": "abpModule", + "name": "AbpIdentityServerEntityFrameworkCoreModule" + } + ] +} \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xml b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xsd b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo.Abp.IdentityServer.Installer.csproj b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo.Abp.IdentityServer.Installer.csproj new file mode 100644 index 0000000000..ca7d96ac5d --- /dev/null +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo.Abp.IdentityServer.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/AbpIdentityServerInstallerModule.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/AbpIdentityServerInstallerModule.cs new file mode 100644 index 0000000000..f3b7447744 --- /dev/null +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/AbpIdentityServerInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.IdentityServer +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpIdentityServerInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/IdentityServerInstallerPipelineBuilder.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/IdentityServerInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..02042215f5 --- /dev/null +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/IdentityServerInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.IdentityServer +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class IdentityServerInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.IdentityServer.EntityFrameworkCore", + "ConfigureIdentityServer" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/permission-management/Volo.Abp.PermissionManagement.sln b/modules/permission-management/Volo.Abp.PermissionManagement.sln index 6cb7292684..5eb2673282 100644 --- a/modules/permission-management/Volo.Abp.PermissionManagement.sln +++ b/modules/permission-management/Volo.Abp.PermissionManagement.sln @@ -41,6 +41,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManageme EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Blazor.WebAssembly", "src\Volo.Abp.PermissionManagement.Blazor.WebAssembly\Volo.Abp.PermissionManagement.Blazor.WebAssembly.csproj", "{C8AA18AA-BD1F-4E58-92C6-12F846C02000}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Installer", "src\Volo.Abp.PermissionManagement.Installer\Volo.Abp.PermissionManagement.Installer.csproj", "{A0D67614-A668-45E6-BB8F-8ACE54D8A196}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -115,6 +117,10 @@ Global {C8AA18AA-BD1F-4E58-92C6-12F846C02000}.Debug|Any CPU.Build.0 = Debug|Any CPU {C8AA18AA-BD1F-4E58-92C6-12F846C02000}.Release|Any CPU.ActiveCfg = Release|Any CPU {C8AA18AA-BD1F-4E58-92C6-12F846C02000}.Release|Any CPU.Build.0 = Release|Any CPU + {A0D67614-A668-45E6-BB8F-8ACE54D8A196}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0D67614-A668-45E6-BB8F-8ACE54D8A196}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0D67614-A668-45E6-BB8F-8ACE54D8A196}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0D67614-A668-45E6-BB8F-8ACE54D8A196}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -137,6 +143,7 @@ Global {6F899C50-83BB-43C4-983A-DCCD8FBBF066} = {B559B878-38F7-49CC-BC06-43A32D68C1A7} {88B39D54-5289-4D39-B4B9-E7C264ED2996} = {B559B878-38F7-49CC-BC06-43A32D68C1A7} {C8AA18AA-BD1F-4E58-92C6-12F846C02000} = {B559B878-38F7-49CC-BC06-43A32D68C1A7} + {A0D67614-A668-45E6-BB8F-8ACE54D8A196} = {B559B878-38F7-49CC-BC06-43A32D68C1A7} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {8FC7DF78-5E2D-489F-9D43-147D2ABAA112} diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xml b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xsd b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo.Abp.PermissionManagement.Installer.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo.Abp.PermissionManagement.Installer.csproj new file mode 100644 index 0000000000..c1fa844501 --- /dev/null +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo.Abp.PermissionManagement.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/AbpPermissionManagementInstallerModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/AbpPermissionManagementInstallerModule.cs new file mode 100644 index 0000000000..4f82d2996e --- /dev/null +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/AbpPermissionManagementInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.PermissionManagement +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpPermissionManagementInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/PermissionManagementInstallerPipelineBuilder.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/PermissionManagementInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..1f47f5cff4 --- /dev/null +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/PermissionManagementInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.PermissionManagement +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class PermissionManagementInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.PermissionManagement.EntityFrameworkCore", + "ConfigurePermissionManagement" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/setting-management/Volo.Abp.SettingManagement.sln b/modules/setting-management/Volo.Abp.SettingManagement.sln index 57a34cf8ac..26db0f3a72 100644 --- a/modules/setting-management/Volo.Abp.SettingManagement.sln +++ b/modules/setting-management/Volo.Abp.SettingManagement.sln @@ -43,6 +43,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.SettingManagement. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.SettingManagement.Blazor.WebAssembly", "src\Volo.Abp.SettingManagement.Blazor.WebAssembly\Volo.Abp.SettingManagement.Blazor.WebAssembly.csproj", "{9C65F145-6A74-48E4-8950-9E4F83953FDB}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.SettingManagement.Installer", "src\Volo.Abp.SettingManagement.Installer\Volo.Abp.SettingManagement.Installer.csproj", "{6D4AE734-45DF-4A6F-9E8B-2479760F1611}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -117,6 +119,10 @@ Global {9C65F145-6A74-48E4-8950-9E4F83953FDB}.Debug|Any CPU.Build.0 = Debug|Any CPU {9C65F145-6A74-48E4-8950-9E4F83953FDB}.Release|Any CPU.ActiveCfg = Release|Any CPU {9C65F145-6A74-48E4-8950-9E4F83953FDB}.Release|Any CPU.Build.0 = Release|Any CPU + {6D4AE734-45DF-4A6F-9E8B-2479760F1611}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6D4AE734-45DF-4A6F-9E8B-2479760F1611}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6D4AE734-45DF-4A6F-9E8B-2479760F1611}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6D4AE734-45DF-4A6F-9E8B-2479760F1611}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -139,6 +145,7 @@ Global {8488F380-83DD-4209-80B7-87ACAB83A052} = {D3222BEC-EDCE-4509-9A19-36C43C9A59FB} {54825027-5569-456A-81D3-0F425FEE4712} = {F1BE945B-F0CF-4712-BC2B-9AF8C02059EA} {9C65F145-6A74-48E4-8950-9E4F83953FDB} = {F1BE945B-F0CF-4712-BC2B-9AF8C02059EA} + {6D4AE734-45DF-4A6F-9E8B-2479760F1611} = {F1BE945B-F0CF-4712-BC2B-9AF8C02059EA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {24B3A486-E7CA-4AA5-B76F-27D351A97E59} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xml b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xsd b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo.Abp.SettingManagement.Installer.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo.Abp.SettingManagement.Installer.csproj new file mode 100644 index 0000000000..dd3daf7500 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo.Abp.SettingManagement.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/AbpSettingManagementInstallerModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/AbpSettingManagementInstallerModule.cs new file mode 100644 index 0000000000..3fdfb0601d --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/AbpSettingManagementInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.SettingManagement +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpSettingManagementInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/SettingManagementInstallerPipelineBuilder.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/SettingManagementInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..e7fa67631e --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/SettingManagementInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.SettingManagement +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class SettingManagementInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.SettingManagement.EntityFrameworkCore", + "ConfigureSettingManagement" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/tenant-management/Volo.Abp.TenantManagement.abpmdl.json b/modules/tenant-management/Volo.Abp.TenantManagement.abpmdl.json new file mode 100644 index 0000000000..f9094439d8 --- /dev/null +++ b/modules/tenant-management/Volo.Abp.TenantManagement.abpmdl.json @@ -0,0 +1,78 @@ +{ + "folders": { + "items": { + "src": {}, + "test": {} + } + }, + "packages": { + "Volo.Abp.TenantManagement.Domain.Shared": { + "path": "src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.Domain": { + "path": "src/Volo.Abp.TenantManagement.Domain/Volo.Abp.TenantManagement.Domain.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.Application.Contracts": { + "path": "src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.Application": { + "path": "src/Volo.Abp.TenantManagement.Application/Volo.Abp.TenantManagement.Application.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.EntityFrameworkCore": { + "path": "src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo.Abp.TenantManagement.EntityFrameworkCore.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.HttpApi": { + "path": "src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.HttpApi.Client": { + "path": "src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.Web": { + "path": "src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.Application.Tests": { + "path": "test/Volo.Abp.TenantManagement.Application.Tests/Volo.Abp.TenantManagement.Application.Tests.abppkg.json", + "folder": "test" + }, + "Volo.Abp.TenantManagement.EntityFrameworkCore.Tests": { + "path": "test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.abppkg.json", + "folder": "test" + }, + "Volo.Abp.TenantManagement.MongoDB": { + "path": "src/Volo.Abp.TenantManagement.MongoDB/Volo.Abp.TenantManagement.MongoDB.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.MongoDB.Tests": { + "path": "test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo.Abp.TenantManagement.MongoDB.Tests.abppkg.json", + "folder": "test" + }, + "Volo.Abp.TenantManagement.TestBase": { + "path": "test/Volo.Abp.TenantManagement.TestBase/Volo.Abp.TenantManagement.TestBase.abppkg.json", + "folder": "test" + }, + "Volo.Abp.TenantManagement.Domain.Tests": { + "path": "test/Volo.Abp.TenantManagement.Domain.Tests/Volo.Abp.TenantManagement.Domain.Tests.abppkg.json", + "folder": "test" + }, + "Volo.Abp.TenantManagement.Blazor": { + "path": "src/Volo.Abp.TenantManagement.Blazor/Volo.Abp.TenantManagement.Blazor.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.Blazor.WebAssembly": { + "path": "src/Volo.Abp.TenantManagement.Blazor.WebAssembly/Volo.Abp.TenantManagement.Blazor.WebAssembly.abppkg.json", + "folder": "src" + }, + "Volo.Abp.TenantManagement.Blazor.Server": { + "path": "src/Volo.Abp.TenantManagement.Blazor.Server/Volo.Abp.TenantManagement.Blazor.Server.abppkg.json", + "folder": "src" + } + } +} \ No newline at end of file diff --git a/modules/tenant-management/Volo.Abp.TenantManagement.abpsln.json b/modules/tenant-management/Volo.Abp.TenantManagement.abpsln.json new file mode 100644 index 0000000000..d6d4cb2f63 --- /dev/null +++ b/modules/tenant-management/Volo.Abp.TenantManagement.abpsln.json @@ -0,0 +1,7 @@ +{ + "modules": { + "Volo.Abp.TenantManagement": { + "path": "Volo.Abp.TenantManagement.abpmdl.json" + } + } +} \ No newline at end of file diff --git a/modules/tenant-management/Volo.Abp.TenantManagement.sln b/modules/tenant-management/Volo.Abp.TenantManagement.sln index 2fec240db6..27fc44c10c 100644 --- a/modules/tenant-management/Volo.Abp.TenantManagement.sln +++ b/modules/tenant-management/Volo.Abp.TenantManagement.sln @@ -41,6 +41,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TenantManagement.B EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TenantManagement.Blazor.Server", "src\Volo.Abp.TenantManagement.Blazor.Server\Volo.Abp.TenantManagement.Blazor.Server.csproj", "{F92A9527-A2E2-4062-9A4B-0111C89AE222}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TenantManagement.Installer", "src\Volo.Abp.TenantManagement.Installer\Volo.Abp.TenantManagement.Installer.csproj", "{56205DE5-77CB-4593-82E3-2DBC17310DDC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -115,6 +117,10 @@ Global {F92A9527-A2E2-4062-9A4B-0111C89AE222}.Debug|Any CPU.Build.0 = Debug|Any CPU {F92A9527-A2E2-4062-9A4B-0111C89AE222}.Release|Any CPU.ActiveCfg = Release|Any CPU {F92A9527-A2E2-4062-9A4B-0111C89AE222}.Release|Any CPU.Build.0 = Release|Any CPU + {56205DE5-77CB-4593-82E3-2DBC17310DDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {56205DE5-77CB-4593-82E3-2DBC17310DDC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {56205DE5-77CB-4593-82E3-2DBC17310DDC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {56205DE5-77CB-4593-82E3-2DBC17310DDC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -137,6 +143,7 @@ Global {02D10CCE-03B6-42BC-8C7B-7F1EC74FCB8C} = {799CA525-4748-421A-9892-05C68BB2FA13} {62C6DC70-A7DB-4623-A7BD-DB6D679660CA} = {799CA525-4748-421A-9892-05C68BB2FA13} {F92A9527-A2E2-4062-9A4B-0111C89AE222} = {799CA525-4748-421A-9892-05C68BB2FA13} + {56205DE5-77CB-4593-82E3-2DBC17310DDC} = {799CA525-4748-421A-9892-05C68BB2FA13} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {7C258726-2CE0-44D3-A2D7-71812E8F505C} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.abppkg.json new file mode 100644 index 0000000000..49032794e2 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application-contracts" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo.Abp.TenantManagement.Application.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo.Abp.TenantManagement.Application.abppkg.json new file mode 100644 index 0000000000..412567ac33 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo.Abp.TenantManagement.Application.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.Server/Volo.Abp.TenantManagement.Blazor.Server.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.Server/Volo.Abp.TenantManagement.Blazor.Server.abppkg.json new file mode 100644 index 0000000000..ef40d81585 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.Server/Volo.Abp.TenantManagement.Blazor.Server.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.blazor-server" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.WebAssembly/Volo.Abp.TenantManagement.Blazor.WebAssembly.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.WebAssembly/Volo.Abp.TenantManagement.Blazor.WebAssembly.abppkg.json new file mode 100644 index 0000000000..471ef5e067 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.WebAssembly/Volo.Abp.TenantManagement.Blazor.WebAssembly.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.blazor-wasm" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Volo.Abp.TenantManagement.Blazor.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Volo.Abp.TenantManagement.Blazor.abppkg.json new file mode 100644 index 0000000000..19c29b7b8b --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Volo.Abp.TenantManagement.Blazor.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.blazor" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.abppkg.json new file mode 100644 index 0000000000..8b3de05f76 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.domain-shared" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo.Abp.TenantManagement.Domain.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo.Abp.TenantManagement.Domain.abppkg.json new file mode 100644 index 0000000000..1d574efe45 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo.Abp.TenantManagement.Domain.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.domain" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo.Abp.TenantManagement.EntityFrameworkCore.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo.Abp.TenantManagement.EntityFrameworkCore.abppkg.json new file mode 100644 index 0000000000..e1c64f0175 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo.Abp.TenantManagement.EntityFrameworkCore.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.ef" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.abppkg.json new file mode 100644 index 0000000000..7deef5e383 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api-client" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.abppkg.json new file mode 100644 index 0000000000..515bfe64c4 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xml b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xsd b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo.Abp.TenantManagement.Installer.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo.Abp.TenantManagement.Installer.csproj new file mode 100644 index 0000000000..13fa3e195f --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo.Abp.TenantManagement.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/AbpTenantManagementInstallerModule.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/AbpTenantManagementInstallerModule.cs new file mode 100644 index 0000000000..7a0f5f66f2 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/AbpTenantManagementInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.TenantManagement +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpTenantManagementInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/TenantManagementInstallerPipelineBuilder.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/TenantManagementInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..02a3449a7b --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/TenantManagementInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.TenantManagement +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class AuditLoggingInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.TenantManagement.EntityFrameworkCore", + "ConfigureTenantManagement" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo.Abp.TenantManagement.MongoDB.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo.Abp.TenantManagement.MongoDB.abppkg.json new file mode 100644 index 0000000000..8b23fd1e69 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo.Abp.TenantManagement.MongoDB.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mongodb" +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.abppkg.json new file mode 100644 index 0000000000..930c4018b3 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mvc" +} \ No newline at end of file diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo.Abp.TenantManagement.Application.Tests.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo.Abp.TenantManagement.Application.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo.Abp.TenantManagement.Application.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo.Abp.TenantManagement.Domain.Tests.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo.Abp.TenantManagement.Domain.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo.Abp.TenantManagement.Domain.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo.Abp.TenantManagement.MongoDB.Tests.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo.Abp.TenantManagement.MongoDB.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo.Abp.TenantManagement.MongoDB.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.TestBase/Volo.Abp.TenantManagement.TestBase.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.TestBase/Volo.Abp.TenantManagement.TestBase.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.TestBase/Volo.Abp.TenantManagement.TestBase.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/users/Volo.Abp.Users.sln b/modules/users/Volo.Abp.Users.sln index 6fb2387f16..d09f18a406 100644 --- a/modules/users/Volo.Abp.Users.sln +++ b/modules/users/Volo.Abp.Users.sln @@ -15,6 +15,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Users.Abstractions EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Users.MongoDB", "src\Volo.Abp.Users.MongoDB\Volo.Abp.Users.MongoDB.csproj", "{70E89492-7D4E-418A-835F-35E70282E808}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Users.Installer", "src\Volo.Abp.Users.Installer\Volo.Abp.Users.Installer.csproj", "{561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -41,6 +43,10 @@ Global {70E89492-7D4E-418A-835F-35E70282E808}.Debug|Any CPU.Build.0 = Debug|Any CPU {70E89492-7D4E-418A-835F-35E70282E808}.Release|Any CPU.ActiveCfg = Release|Any CPU {70E89492-7D4E-418A-835F-35E70282E808}.Release|Any CPU.Build.0 = Release|Any CPU + {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -51,6 +57,7 @@ Global {C18FFD6A-0BE2-4FB8-B953-895F7B9CB374} = {6DE713B1-3AD7-4388-8B07-CCBE7158EC6E} {3905D0E9-448D-43DE-8884-C60D0612AA04} = {6DE713B1-3AD7-4388-8B07-CCBE7158EC6E} {70E89492-7D4E-418A-835F-35E70282E808} = {6DE713B1-3AD7-4388-8B07-CCBE7158EC6E} + {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7} = {6DE713B1-3AD7-4388-8B07-CCBE7158EC6E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E18777C8-72AB-4C08-BA72-885650BE70A9} diff --git a/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xml b/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xsd b/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/users/src/Volo.Abp.Users.Installer/Volo.Abp.Users.Installer.csproj b/modules/users/src/Volo.Abp.Users.Installer/Volo.Abp.Users.Installer.csproj new file mode 100644 index 0000000000..e39f1e5b6e --- /dev/null +++ b/modules/users/src/Volo.Abp.Users.Installer/Volo.Abp.Users.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/AbpUsersInstallerModule.cs b/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/AbpUsersInstallerModule.cs new file mode 100644 index 0000000000..bd9f0800a1 --- /dev/null +++ b/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/AbpUsersInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.Users +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpUsersInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/UsersInstallerPipelineBuilder.cs b/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/UsersInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..f5e71b8860 --- /dev/null +++ b/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/UsersInstallerPipelineBuilder.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.Users +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class UsersInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + context.AddEfCoreConfigurationMethodDeclaration( + new EfCoreConfigurationMethodDeclaration( + "Volo.Abp.Users.EntityFrameworkCore", + "ConfigureAbpUser" + ) + ); + + return GetBasePipeline(context); + } + } +} diff --git a/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpmdl.json b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpmdl.json new file mode 100644 index 0000000000..dbb8cc5c4e --- /dev/null +++ b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpmdl.json @@ -0,0 +1,18 @@ +{ + "folders": { + "items": { + "src": {}, + "app": {} + } + }, + "packages": { + "Volo.Abp.VirtualFileExplorer.Web": { + "path": "src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.abppkg.json", + "folder": "src" + }, + "Volo.Abp.VirtualFileExplorer.DemoApp": { + "path": "app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.abppkg.json", + "folder": "app" + } + } +} \ No newline at end of file diff --git a/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpsln.json b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpsln.json new file mode 100644 index 0000000000..c163e92950 --- /dev/null +++ b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpsln.json @@ -0,0 +1,7 @@ +{ + "modules": { + "Volo.Abp.VirtualFileExplorer": { + "path": "Volo.Abp.VirtualFileExplorer.abpmdl.json" + } + } +} \ No newline at end of file diff --git a/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.sln b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.sln index 240117b5b7..67b9741932 100644 --- a/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.sln +++ b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.sln @@ -11,6 +11,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "app", "app", "{0489DA85-A27 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.VirtualFileExplorer.DemoApp", "app\Volo.Abp.VirtualFileExplorer.DemoApp\Volo.Abp.VirtualFileExplorer.DemoApp.csproj", "{6DAA2A8D-5422-4C3B-BA70-B54D949B1678}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.VirtualFileExplorer.Installer", "src\Volo.Abp.VirtualFileExplorer.Installer\Volo.Abp.VirtualFileExplorer.Installer.csproj", "{638DDC11-0B86-4B5D-A518-4A8158665074}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -25,6 +27,10 @@ Global {6DAA2A8D-5422-4C3B-BA70-B54D949B1678}.Debug|Any CPU.Build.0 = Debug|Any CPU {6DAA2A8D-5422-4C3B-BA70-B54D949B1678}.Release|Any CPU.ActiveCfg = Release|Any CPU {6DAA2A8D-5422-4C3B-BA70-B54D949B1678}.Release|Any CPU.Build.0 = Release|Any CPU + {638DDC11-0B86-4B5D-A518-4A8158665074}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {638DDC11-0B86-4B5D-A518-4A8158665074}.Debug|Any CPU.Build.0 = Debug|Any CPU + {638DDC11-0B86-4B5D-A518-4A8158665074}.Release|Any CPU.ActiveCfg = Release|Any CPU + {638DDC11-0B86-4B5D-A518-4A8158665074}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -32,6 +38,7 @@ Global GlobalSection(NestedProjects) = preSolution {3B7B6317-1B85-4164-8E11-75574F80AE17} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} {6DAA2A8D-5422-4C3B-BA70-B54D949B1678} = {0489DA85-A27F-4D98-9DBD-950F5F2ECD11} + {638DDC11-0B86-4B5D-A518-4A8158665074} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.abppkg.json b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xml b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xsd b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo.Abp.VirtualFileExplorer.Installer.csproj b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo.Abp.VirtualFileExplorer.Installer.csproj new file mode 100644 index 0000000000..6a82e34326 --- /dev/null +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo.Abp.VirtualFileExplorer.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs new file mode 100644 index 0000000000..f2e0f800a5 --- /dev/null +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.VirtualFileExplorer +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class AbpVirtualFileExplorerInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..fe75a305f7 --- /dev/null +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace Volo.Abp.VirtualFileExplorer +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class VirtualFileExplorerInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + return GetBasePipeline(context); + } + } +} diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.abppkg.json b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.abppkg.json new file mode 100644 index 0000000000..930c4018b3 --- /dev/null +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mvc" +} \ No newline at end of file diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index 75a8b0c9c0..f356175dd9 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -21,7 +21,8 @@ $solutions = ( "modules/users", "modules/virtual-file-explorer", "modules/blob-storing-database", - "modules/cms-kit" + "modules/cms-kit", + "modules/studio" ) # List of projects @@ -166,24 +167,32 @@ $projects = ( "modules/account/src/Volo.Abp.Account.Web", "modules/account/src/Volo.Abp.Account.Web.IdentityServer", "modules/account/src/Volo.Abp.Account.Blazor", + "modules/account/src/Volo.Abp.Account.Installer", + "studio/source-codes/Volo.Abp.Account.SourceCode", # modules/audit-logging "modules/audit-logging/src/Volo.Abp.AuditLogging.Domain", "modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared", "modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore", "modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB", + "modules/audit-logging/src/Volo.Abp.AuditLogging.Installer", + "studio/source-codes/Volo.Abp.AuditLogging.SourceCode", # modules/background-jobs "modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain", "modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain.Shared", "modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore", "modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB", + "modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer", + "studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode", # modules/basic-theme "modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme", "modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme", "modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme", "modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", + "modules/basic-theme/src/Volo.Abp.BasicTheme.Installer", + "studio/source-codes/Volo.Abp.BasicTheme.SourceCode", # modules/blogging "modules/blogging/src/Volo.Blogging.Application.Contracts.Shared", @@ -235,6 +244,8 @@ $projects = ( "modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor", "modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor.Server", "modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor.WebAssembly", + "modules/feature-management/src/Volo.Abp.FeatureManagement.Installer", + "studio/source-codes/Volo.Abp.FeatureManagement.SourceCode", # modules/identity "modules/identity/src/Volo.Abp.Identity.Application.Contracts", @@ -251,6 +262,8 @@ $projects = ( "modules/identity/src/Volo.Abp.Identity.Blazor.Server", "modules/identity/src/Volo.Abp.Identity.Blazor.WebAssembly", "modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity", + "modules/identity/src/Volo.Abp.Identity.Installer", + "studio/source-codes/Volo.Abp.Identity.SourceCode", # modules/identityserver "modules/identityserver/src/Volo.Abp.IdentityServer.Domain", @@ -258,6 +271,8 @@ $projects = ( "modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore", "modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB", "modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer", + "modules/identityserver/src/Volo.Abp.IdentityServer.Installer", + "studio/source-codes/Volo.Abp.IdentityServer.SourceCode", # modules/permission-management "modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts", @@ -272,6 +287,8 @@ $projects = ( "modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor", "modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.Server", "modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.WebAssembly", + "modules/permission-management/src/Volo.Abp.PermissionManagement.Installer", + "studio/source-codes/Volo.Abp.PermissionManagement.SourceCode", # modules/setting-management "modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts", @@ -286,6 +303,8 @@ $projects = ( "modules/setting-management/src/Volo.Abp.SettingManagement.HttpApi", "modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB", "modules/setting-management/src/Volo.Abp.SettingManagement.Web", + "modules/setting-management/src/Volo.Abp.SettingManagement.Installer", + "studio/source-codes/Volo.Abp.SettingManagement.SourceCode", # modules/tenant-management "modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts", @@ -300,6 +319,8 @@ $projects = ( "modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi", "modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB", "modules/tenant-management/src/Volo.Abp.TenantManagement.Web", + "modules/tenant-management/src/Volo.Abp.TenantManagement.Installer", + "studio/source-codes/Volo.Abp.TenantManagement.SourceCode", # modules/users "modules/users/src/Volo.Abp.Users.Abstractions", @@ -307,15 +328,21 @@ $projects = ( "modules/users/src/Volo.Abp.Users.Domain.Shared", "modules/users/src/Volo.Abp.Users.EntityFrameworkCore", "modules/users/src/Volo.Abp.Users.MongoDB", + "modules/users/src/Volo.Abp.Users.Installer", + "studio/source-codes/Volo.Abp.Users.SourceCode", # modules/virtual-file-explorer "modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web", + "modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer", + "studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode", # modules/blob-storing-database "modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain", "modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared", "modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore", "modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB", + "modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer", + "studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode", # abp/cms-kit "modules/cms-kit/src/Volo.CmsKit.Admin.Application", @@ -341,5 +368,14 @@ $projects = ( "modules/cms-kit/src/Volo.CmsKit.Public.HttpApi", "modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client", "modules/cms-kit/src/Volo.CmsKit.Public.Web", - "modules/cms-kit/src/Volo.CmsKit.Web" + "modules/cms-kit/src/Volo.CmsKit.Web", + "modules/cms-kit/src/Volo.CmsKit.Installer", + "studio/source-codes/Volo.CmsKit.SourceCode", + + # abp/studio + "studio/src/Volo.Abp.Studio.Analyzing.Abstractions", + "studio/src/Volo.Abp.Studio.Domain.CommonServices", + "studio/src/Volo.Abp.Studio.Domain.Shared", + "studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions", + "studio/src/Volo.Abp.Studio.ModuleInstaller" ) diff --git a/studio/Volo.Abp.Studio.Open.sln b/studio/Volo.Abp.Studio.Open.sln new file mode 100644 index 0000000000..563e1d4602 --- /dev/null +++ b/studio/Volo.Abp.Studio.Open.sln @@ -0,0 +1,49 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{344A1096-CC05-42D1-BDDB-E254C27508A9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.Analyzing.Abstractions", "src\Volo.Abp.Studio.Analyzing.Abstractions\Volo.Abp.Studio.Analyzing.Abstractions.csproj", "{2271296E-33FD-46BE-97FD-9938193CB7D1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.Domain.CommonServices", "src\Volo.Abp.Studio.Domain.CommonServices\Volo.Abp.Studio.Domain.CommonServices.csproj", "{1C86021F-E522-41A1-AC3F-01B0E474D75E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.Domain.Shared", "src\Volo.Abp.Studio.Domain.Shared\Volo.Abp.Studio.Domain.Shared.csproj", "{28132E4E-FFB9-45C4-99AD-1BCA04B3E597}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.ModuleInstaller", "src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj", "{4FA11334-D727-4C14-9D71-1DB46AC3BE9C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.ModuleInstaller.Abstractions", "src\Volo.Abp.Studio.ModuleInstaller.Abstractions\Volo.Abp.Studio.ModuleInstaller.Abstractions.csproj", "{99679BF9-B888-4814-8E85-F751984CAFF8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2271296E-33FD-46BE-97FD-9938193CB7D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2271296E-33FD-46BE-97FD-9938193CB7D1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2271296E-33FD-46BE-97FD-9938193CB7D1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2271296E-33FD-46BE-97FD-9938193CB7D1}.Release|Any CPU.Build.0 = Release|Any CPU + {1C86021F-E522-41A1-AC3F-01B0E474D75E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1C86021F-E522-41A1-AC3F-01B0E474D75E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C86021F-E522-41A1-AC3F-01B0E474D75E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1C86021F-E522-41A1-AC3F-01B0E474D75E}.Release|Any CPU.Build.0 = Release|Any CPU + {28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Release|Any CPU.ActiveCfg = Release|Any CPU + {28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Release|Any CPU.Build.0 = Release|Any CPU + {4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Release|Any CPU.Build.0 = Release|Any CPU + {99679BF9-B888-4814-8E85-F751984CAFF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {99679BF9-B888-4814-8E85-F751984CAFF8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {99679BF9-B888-4814-8E85-F751984CAFF8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {99679BF9-B888-4814-8E85-F751984CAFF8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {2271296E-33FD-46BE-97FD-9938193CB7D1} = {344A1096-CC05-42D1-BDDB-E254C27508A9} + {1C86021F-E522-41A1-AC3F-01B0E474D75E} = {344A1096-CC05-42D1-BDDB-E254C27508A9} + {28132E4E-FFB9-45C4-99AD-1BCA04B3E597} = {344A1096-CC05-42D1-BDDB-E254C27508A9} + {4FA11334-D727-4C14-9D71-1DB46AC3BE9C} = {344A1096-CC05-42D1-BDDB-E254C27508A9} + {99679BF9-B888-4814-8E85-F751984CAFF8} = {344A1096-CC05-42D1-BDDB-E254C27508A9} + EndGlobalSection +EndGlobal diff --git a/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.csproj b/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.csproj new file mode 100644 index 0000000000..0c7dece711 --- /dev/null +++ b/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip b/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip new file mode 100644 index 0000000000..b9f804564b Binary files /dev/null and b/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.csproj b/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.csproj new file mode 100644 index 0000000000..f2f53dc319 --- /dev/null +++ b/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip b/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip new file mode 100644 index 0000000000..4659363044 Binary files /dev/null and b/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.csproj b/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.csproj new file mode 100644 index 0000000000..c98e7f5564 --- /dev/null +++ b/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip b/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip new file mode 100644 index 0000000000..2dbaa13bb9 Binary files /dev/null and b/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.csproj b/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.csproj new file mode 100644 index 0000000000..f7c7dd4002 --- /dev/null +++ b/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip b/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip new file mode 100644 index 0000000000..aa881f36a0 Binary files /dev/null and b/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.csproj b/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.csproj new file mode 100644 index 0000000000..9904f7f404 --- /dev/null +++ b/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip b/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip new file mode 100644 index 0000000000..fdc85f636c Binary files /dev/null and b/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.csproj b/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.csproj new file mode 100644 index 0000000000..e231b185df --- /dev/null +++ b/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip b/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip new file mode 100644 index 0000000000..e0e759b1f9 Binary files /dev/null and b/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.csproj b/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.csproj new file mode 100644 index 0000000000..17620a2fdb --- /dev/null +++ b/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip b/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip new file mode 100644 index 0000000000..e243461ac0 Binary files /dev/null and b/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.csproj b/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.csproj new file mode 100644 index 0000000000..62f0582319 --- /dev/null +++ b/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip b/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip new file mode 100644 index 0000000000..89613a9877 Binary files /dev/null and b/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.csproj b/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.csproj new file mode 100644 index 0000000000..3f9233ef8c --- /dev/null +++ b/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip b/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip new file mode 100644 index 0000000000..8e7e4413d0 Binary files /dev/null and b/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.csproj b/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.csproj new file mode 100644 index 0000000000..20d6d1dbf7 --- /dev/null +++ b/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip b/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip new file mode 100644 index 0000000000..31ff3342c6 Binary files /dev/null and b/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.csproj b/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.csproj new file mode 100644 index 0000000000..05018ac9e5 --- /dev/null +++ b/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip b/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip new file mode 100644 index 0000000000..0d98b22322 Binary files /dev/null and b/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.csproj b/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.csproj new file mode 100644 index 0000000000..6788400b25 --- /dev/null +++ b/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip b/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip new file mode 100644 index 0000000000..5867c26ac5 Binary files /dev/null and b/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip differ diff --git a/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.csproj b/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.csproj new file mode 100644 index 0000000000..e18346cc70 --- /dev/null +++ b/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip b/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip new file mode 100644 index 0000000000..ba904407f0 Binary files /dev/null and b/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip differ diff --git a/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.csproj b/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.csproj new file mode 100644 index 0000000000..14e27e5d74 --- /dev/null +++ b/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.csproj @@ -0,0 +1,17 @@ + + + + + + + net6.0 + + + + + + true + content\ + + + diff --git a/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip b/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip new file mode 100644 index 0000000000..0044566350 Binary files /dev/null and b/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip differ diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.csproj b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.csproj new file mode 100644 index 0000000000..3998636495 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.csproj @@ -0,0 +1,14 @@ + + + + + + netstandard2.0 + + + + + + + + diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/AbpStudioAnalyzingAbstractionsModule.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/AbpStudioAnalyzingAbstractionsModule.cs new file mode 100644 index 0000000000..6935ae3755 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/AbpStudioAnalyzingAbstractionsModule.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Modularity; + +namespace Volo.Abp.Studio.Analyzing +{ + public class AbpStudioAnalyzingAbstractionsModule : AbpModule + { + + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Application/ApplicationServiceModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Application/ApplicationServiceModel.cs new file mode 100644 index 0000000000..3618b58711 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Application/ApplicationServiceModel.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Application +{ + [PackageContentItemName(ContentTypeName)] + public class ApplicationServiceModel : PackageContentItemModel + { + public const string ContentTypeName = "applicationService"; + + public string Namespace { get; set; } + + public string Summary { get; set; } + + public List ImplementingInterfaces { get; set; } + + public ApplicationServiceModel([NotNull] string name) : base(name) + { + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Authorization/PermissionModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Authorization/PermissionModel.cs new file mode 100644 index 0000000000..a386f5c4d5 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Authorization/PermissionModel.cs @@ -0,0 +1,24 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Authorization +{ + [PackageContentItemName(ContentTypeName)] + public class PermissionModel : PackageContentItemModel + { + public const string ContentTypeName = "permission"; + + public string DisplayName { get; } + + public bool IsEnabled { get; } + + public PermissionModel( + [NotNull] string name, + string displayName, + bool isEnabled) + : base(name) + { + DisplayName = displayName; + IsEnabled = isEnabled; + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseCollectionModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseCollectionModel.cs new file mode 100644 index 0000000000..5e78f54f87 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseCollectionModel.cs @@ -0,0 +1,17 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Database +{ + [PackageContentItemName(ContentTypeName)] + public class DatabaseCollectionModel : PackageContentItemModel + { + public const string ContentTypeName = "databaseCollection"; + + public string EntityFullName { get; private set; } + + public DatabaseCollectionModel([NotNull] string name, string entityFullName) : base(name) + { + EntityFullName = Check.NotNullOrWhiteSpace(entityFullName, nameof(entityFullName)); + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseTableModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseTableModel.cs new file mode 100644 index 0000000000..a2af1acdbb --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseTableModel.cs @@ -0,0 +1,17 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Database +{ + [PackageContentItemName(ContentTypeName)] + public class DatabaseTableModel : PackageContentItemModel + { + public const string ContentTypeName = "databaseTable"; + + public string EntityFullName { get; private set; } + + public DatabaseTableModel([NotNull] string name, string entityFullName) : base(name) + { + EntityFullName = Check.NotNullOrWhiteSpace(entityFullName, nameof(entityFullName)); + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/EfCoreDbContextModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/EfCoreDbContextModel.cs new file mode 100644 index 0000000000..292b58e65f --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/EfCoreDbContextModel.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Database +{ + [PackageContentItemName(ContentTypeName)] + public class EfCoreDbContextModel : PackageContentItemModel, IDbContextModel + { + public const string ContentTypeName = "efCoreDbContext"; + + public string Namespace { get; private set; } + + public string ConnectionStringName { get; set; } + + public List DatabaseTables { get; set; } + + public EfCoreDbContextModel( + [NotNull] string name, + [NotNull] string @namespace + ) : base(name) + { + Namespace = Check.NotNullOrWhiteSpace(@namespace, nameof(@namespace)); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/IDbContextModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/IDbContextModel.cs new file mode 100644 index 0000000000..08c00162f5 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/IDbContextModel.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.Studio.Analyzing.Models.Database +{ + public interface IDbContextModel + { + string ConnectionStringName { get; set; } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/MongoDbContextModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/MongoDbContextModel.cs new file mode 100644 index 0000000000..6fa6c80f79 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/MongoDbContextModel.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Database +{ + [PackageContentItemName(ContentTypeName)] + public class MongoDbContextModel : PackageContentItemModel, IDbContextModel + { + public const string ContentTypeName = "mongoDbContext"; + + public string Namespace { get; private set; } + + public string ConnectionStringName { get; set; } + + public List DatabaseCollections { get; set; } + + public MongoDbContextModel( + [NotNull] string name, + [NotNull] string @namespace + ) : base(name) + { + Namespace = Check.NotNullOrWhiteSpace(@namespace, nameof(@namespace)); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/AggregateRootModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/AggregateRootModel.cs new file mode 100644 index 0000000000..f31e07d8b1 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/AggregateRootModel.cs @@ -0,0 +1,12 @@ +namespace Volo.Abp.Studio.Analyzing.Models.Domain +{ + [PackageContentItemName(ContentTypeName)] + public class AggregateRootModel : EntityModel + { + public new const string ContentTypeName = "aggregateRoot"; + + public AggregateRootModel(string name) : base(name) + { + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/DomainServiceModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/DomainServiceModel.cs new file mode 100644 index 0000000000..6b4a648bcd --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/DomainServiceModel.cs @@ -0,0 +1,18 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Domain +{ + [PackageContentItemName(ContentTypeName)] + public class DomainServiceModel : PackageContentItemModel + { + public const string ContentTypeName = "domainService"; + + public string Namespace { get; set; } + + public string Summary { get; set; } + + public DomainServiceModel([NotNull] string name) : base(name) + { + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/EntityModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/EntityModel.cs new file mode 100644 index 0000000000..0b3e5a5708 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/EntityModel.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Studio.Analyzing.Models.Domain +{ + [PackageContentItemName(ContentTypeName)] + public class EntityModel : PackageContentItemModel + { + public const string ContentTypeName = "entity"; + + public string Namespace { get; set; } + + public string PrimaryKeyType { get; set; } + + public string Summary { get; set; } + + public List CollectionProperties { get; set; } + public List NavigationProperties { get; set; } + + public EntityModel(string name) : base(name) + { + CollectionProperties = new List(); + NavigationProperties = new List(); + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/RepositoryInterfaceModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/RepositoryInterfaceModel.cs new file mode 100644 index 0000000000..a44613b335 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/RepositoryInterfaceModel.cs @@ -0,0 +1,20 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Domain +{ + [PackageContentItemName(ContentTypeName)] + public class RepositoryInterfaceModel : PackageContentItemModel + { + public const string ContentTypeName = "repositoryInterface"; + + public string Namespace { get; set; } + + public string Summary { get; set; } + + public EntityModel EntityModel { get; set; } + + public RepositoryInterfaceModel([NotNull] string name) : base(name) + { + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Feature/FeatureModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Feature/FeatureModel.cs new file mode 100644 index 0000000000..ee2b7ef48b --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Feature/FeatureModel.cs @@ -0,0 +1,40 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Feature +{ + [PackageContentItemName(ContentTypeName)] + public class FeatureModel : PackageContentItemModel + { + public const string ContentTypeName = "feature"; + + public string ValueType { get; } + + public string DefaultValue { get; } + + public string DisplayName { get; } + + public string Description { get; } + + public bool IsAvailableToHost { get; } + + public bool IsVisibleToClients { get; } + + public FeatureModel( + [NotNull] string name, + [NotNull] string valueType, + string defaultValue, + string displayName, + string description, + bool isAvailableToHost, + bool isVisibleToClients + ) : base(name) + { + ValueType = valueType; + DefaultValue = defaultValue; + DisplayName = displayName; + Description = description; + IsAvailableToHost = isAvailableToHost; + IsVisibleToClients = isVisibleToClients; + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Module/AbpModuleModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Module/AbpModuleModel.cs new file mode 100644 index 0000000000..9094d7d0b8 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Module/AbpModuleModel.cs @@ -0,0 +1,16 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Module +{ + [PackageContentItemName(ContentTypeName)] + public class AbpModuleModel : PackageContentItemModel + { + public const string ContentTypeName = "abpModule"; + + public string Namespace { get; set; } + + public AbpModuleModel([NotNull] string name) : base(name) + { + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemModel.cs new file mode 100644 index 0000000000..749ecd8fa9 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemModel.cs @@ -0,0 +1,16 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models +{ + public abstract class PackageContentItemModel + { + public string ContentType { get; } + public string Name { get; } + + public PackageContentItemModel([NotNull] string name) + { + Name = Check.NotNullOrWhiteSpace(name, nameof(name)); + ContentType = PackageContentItemNameAttribute.GetName(GetType()); + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemNameAttribute.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemNameAttribute.cs new file mode 100644 index 0000000000..9a04fa274b --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemNameAttribute.cs @@ -0,0 +1,26 @@ +using System; +using Volo.Abp.Reflection; + +namespace Volo.Abp.Studio.Analyzing.Models +{ + public class PackageContentItemNameAttribute : Attribute + { + public string Name { get; } + + public PackageContentItemNameAttribute(string name) + { + Name = name; + } + + public static string GetName(Type type) + { + var attribute = ReflectionHelper.GetSingleAttributeOrDefault(type); + if (attribute == null) + { + throw new ApplicationException($"Given type {type.FullName} must have an {nameof(PackageContentItemNameAttribute)}, but not defined!"); + } + + return attribute.Name; + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentList.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentList.cs new file mode 100644 index 0000000000..ab519cb264 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentList.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Studio.Analyzing.Models +{ + public class PackageContentList : List + { + + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageModel.cs new file mode 100644 index 0000000000..74bcaac9cf --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageModel.cs @@ -0,0 +1,20 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models +{ + public class PackageModel + { + public string Name { get; } + + public string Hash { get; } + + public PackageContentList Contents { get; } + + public PackageModel([NotNull] string name, [NotNull] string hash) + { + Name = Check.NotNullOrWhiteSpace(name, nameof(name)); + Contents = new PackageContentList(); + Hash = hash; + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Setting/SettingModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Setting/SettingModel.cs new file mode 100644 index 0000000000..910f81099f --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Setting/SettingModel.cs @@ -0,0 +1,26 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing.Models.Setting +{ + [PackageContentItemName(ContentTypeName)] + public class SettingModel : PackageContentItemModel + { + public const string ContentTypeName = "setting"; + + public string DefaultValue { get; set; } + + public string DisplayName { get; set; } + + public string Description { get; set; } + + public bool IsVisibleToClient { get; set; } + + public bool IsInherited { get; set; } + + public bool IsEncrypted { get; set; } + + public SettingModel([NotNull] string name) : base(name) + { + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.csproj b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.csproj new file mode 100644 index 0000000000..0f266a153e --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.csproj @@ -0,0 +1,21 @@ + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioDomainCommonServicesModule.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioDomainCommonServicesModule.cs new file mode 100644 index 0000000000..84b2dba930 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioDomainCommonServicesModule.cs @@ -0,0 +1,17 @@ +using System.IO.Abstractions; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Studio +{ + [DependsOn( + typeof(AbpStudioDomainSharedModule) + )] + public class AbpStudioDomainCommonServicesModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddSingleton(new FileSystem()); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioException.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioException.cs new file mode 100644 index 0000000000..418e6067b9 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioException.cs @@ -0,0 +1,28 @@ +using System; +using System.Runtime.Serialization; +using Microsoft.Extensions.Logging; + +namespace Volo.Abp.Studio +{ + public class AbpStudioException : BusinessException + { + public AbpStudioException( + string code = null, + string message = null, + string details = null, + Exception innerException = null, + LogLevel logLevel = LogLevel.Warning) + : base(code, message, details, innerException, logLevel) + { + Code = code; + Details = details; + LogLevel = logLevel; + } + + public AbpStudioException(SerializationInfo serializationInfo, StreamingContext context) + : base(serializationInfo, context) + { + + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/PathHelper.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/PathHelper.cs new file mode 100644 index 0000000000..b741e37cf8 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/PathHelper.cs @@ -0,0 +1,37 @@ +using System; +using System.Runtime.InteropServices; +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Helpers +{ + public static class PathHelper + { + public static string GetRelativePath([NotNull] string basePath, [NotNull] string targetPath) + { + Check.NotNull(basePath, nameof(basePath)); + Check.NotNull(targetPath, nameof(targetPath)); + + return new Uri(basePath).MakeRelativeUri(new Uri(targetPath)).ToString(); + } + + public static string EnsureForwardSlash(string path) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + return path.Replace("\\", "/"); + } + + return path; + } + + public static string Normalize(string path) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + return path.Replace("/", "\\"); + } + + return path; + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/AbpModuleFileManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/AbpModuleFileManager.cs new file mode 100644 index 0000000000..ccb90ad2e4 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/AbpModuleFileManager.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.IO.Abstractions; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Studio.Packages.Modifying +{ + public class AbpModuleFileManager : IAbpModuleFileManager, ITransientDependency + { + public IFileSystem FileSystem { get; } + + public AbpModuleFileManager(IFileSystem fileSystem) + { + FileSystem = fileSystem; + } + + public async Task AddDependency(string filePath, string moduleToAdd) + { + var fileContent = await FileSystem.File.ReadAllTextAsync(filePath); + var moduleName = moduleToAdd.Split(".").Last(); + var moduleNamespace = moduleToAdd.RemovePostFix("." + moduleName); + var usingStatement = $"using {moduleNamespace};"; + var dependsOnStart = $"DependsOn("; + + if (fileContent.Contains($"typeof({moduleName})")) + { + // module already added + return; + } + + if (!fileContent.NormalizeLineEndings().SplitToLines().Any(l=> l.Trim().StartsWith("namespace ") && l.Contains(moduleNamespace)) && + !fileContent.Contains(usingStatement) + ) + { + fileContent = usingStatement + Environment.NewLine + fileContent; + } + + if (!fileContent.Contains(dependsOnStart)) + { + var fileLines = fileContent.NormalizeLineEndings().SplitToLines().ToList(); + fileLines.InsertBefore(l=> l.Contains("public") && l.Contains("class"), $" [DependsOn(typeof({moduleName}))]"); + fileContent = fileLines.JoinAsString(Environment.NewLine); + } + else + { + var fileLines = fileContent.NormalizeLineEndings().SplitToLines().ToList(); + var dependsOnStartLine = fileLines.First(l=> l.Contains(dependsOnStart)); + var dependsOnStartLineModified = dependsOnStartLine.Replace(dependsOnStart, + dependsOnStart + Environment.NewLine + + $" typeof({moduleName})," + ); + fileContent = fileContent.Replace(dependsOnStartLine, dependsOnStartLineModified); + } + + FileSystem.File.WriteAllTextAsync(filePath, fileContent); + } + + public async Task ExtractModuleNameWithNamespace(string filePath) + { + var fileContent = await FileSystem.File.ReadAllTextAsync(filePath); + + var fileLines = fileContent.NormalizeLineEndings().SplitToLines(); + + var lineOfClassName = fileLines.First(l=> l.Contains("public") && l.Contains("class")); + + var moduleName = lineOfClassName.Split(":")[0].Trim().Split(" ").Last(); + + var lineOfNamespace = fileLines.First(l=> l.Trim().StartsWith("namespace")); + + var moduleNamespace = lineOfNamespace.Split(" ").Skip(1).First(); + + return moduleNamespace + "." + moduleName; + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs new file mode 100644 index 0000000000..e1bf7bccd2 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs @@ -0,0 +1,204 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using System.Xml; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.Helpers; +using Volo.Abp.Studio.Package; +using Volo.Abp.Studio.Xml; + +namespace Volo.Abp.Studio.Packages.Modifying +{ + public class CsprojFileManager: XmlFileManagerBase, ICsprojFileManager, ITransientDependency + { + public async Task AddProjectReferenceAsync(string filePath, string projectToReference) + { + var document = await GetXmlDocumentAsync(filePath); + + /*if (document.SelectNodes($"/Project/ItemGroup/ProjectReference[ends-with(@Include, '{Path.GetFileName(projectToReference)}')]").Count > 0) + { + return; + }*/ + + var packageReferenceToSameProject = + document.SelectNodes( + $"/Project/ItemGroup/PackageReference[starts-with(@Include, '{Path.GetFileName(projectToReference).RemovePostFix(".csproj")}')]" + ); + + if (packageReferenceToSameProject.Count > 0) + { + packageReferenceToSameProject[0].ParentNode.RemoveChild(packageReferenceToSameProject[0]); + } + + var relativePath = PathHelper.GetRelativePath(filePath, projectToReference); + + var itemGroupNode = GetOrCreateItemGroupNode(document); + + var newNode = document.CreateElement("ProjectReference"); + + var includeAttr = document.CreateAttribute("Include"); + includeAttr.Value = relativePath; + newNode.Attributes.Append(includeAttr); + + itemGroupNode.AppendChild(newNode); + + await SaveXmlDocumentAsync(filePath, document); + } + + public async Task AddPackageReferenceAsync(string filePath, string packageName, string version) + { + var document = await GetXmlDocumentAsync(filePath); + + if (document.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{packageName}')]").Count > 0) + { + // Package reference is already added. + return; + } + + var itemGroupNode = GetOrCreateItemGroupNode(document); + + var newNode = document.CreateElement("PackageReference"); + + var includeAttr = document.CreateAttribute("Include"); + includeAttr.Value = packageName; + newNode.Attributes.Append(includeAttr); + + var versionAttr = document.CreateAttribute("Version"); + versionAttr.Value = version; + newNode.Attributes.Append(versionAttr); + + itemGroupNode.AppendChild(newNode); + itemGroupNode.AppendChild(document.CreateWhitespace(Environment.NewLine + " ")); + + await SaveXmlDocumentAsync(filePath, document); + } + + public async Task ConvertPackageReferenceToProjectReferenceAsync(string filePath, string projectToReference) + { + var document = await GetXmlDocumentAsync(filePath); + + var packageName = Path.GetFileName(projectToReference).RemovePostFix(".csproj"); + + var matchedNodes = document.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{packageName}')]"); + + if (matchedNodes.Count == 0) + { + return; + } + + XmlNode targetNode = null; + + foreach (XmlNode matchedNode in matchedNodes) + { + if (matchedNode.Attributes["Include"].Value == packageName) + { + targetNode = matchedNode; + break; + } + } + + if (targetNode == null) + { + return; + } + + var targetNodeParent = targetNode.ParentNode; + + targetNodeParent.RemoveChild(targetNode); + + var relativePath = PathHelper.GetRelativePath(filePath, projectToReference); + + var newNode = document.CreateElement("ProjectReference"); + + var includeAttr = document.CreateAttribute("Include"); + includeAttr.Value = relativePath; + newNode.Attributes.Append(includeAttr); + + targetNodeParent.AppendChild(newNode); + + await SaveXmlDocumentAsync(filePath, document); + } + + public async Task GetTargetFrameworkAsync(string filePath) + { + var document = await GetXmlDocumentAsync(filePath); + + var nodes = document["Project"]?["PropertyGroup"]?.SelectNodes("TargetFramework"); + + if (nodes == null || nodes.Count == 0) + { + return null; + } + + return nodes[0].InnerText.Trim(); + } + + public async Task> GetDependencyListAsync(string filePath) + { + var result = new List(); + + var document = await GetXmlDocumentAsync(filePath); + + var packageReferenceNodes = document.SelectNodes($"/Project/ItemGroup/PackageReference"); + var projectReferenceNodes = document.SelectNodes($"/Project/ItemGroup/ProjectReference"); + + if (packageReferenceNodes != null && packageReferenceNodes.Count > 0) + { + foreach (XmlNode packageReferenceNode in packageReferenceNodes) + { + result.Add( + new PackageDependency( + packageReferenceNode.Attributes["Include"].Value, + packageReferenceNode.Attributes["Version"].Value + ) + ); + } + } + + if (projectReferenceNodes != null && projectReferenceNodes.Count > 0) + { + foreach (XmlNode projectReferenceNode in projectReferenceNodes) + { + result.Add( + new PackageDependency( + Path.GetFullPath(Path.Combine(Path.GetDirectoryName(filePath), projectReferenceNode.Attributes["Include"].Value)) + ) + ); + } + } + + return result; + } + + private XmlNode GetOrCreateItemGroupNode(XmlDocument document) + { + var nodes = document["Project"].SelectNodes("ItemGroup"); + + if (nodes == null || nodes.Count < 1) + { + var newNode = document.CreateElement("ItemGroup"); + document["Project"].AppendChild(newNode); + return newNode; + } + + foreach (XmlNode node in nodes) + { + if (node.SelectNodes("ProjectReference").Count > 0) + { + return node; + } + } + + foreach (XmlNode node in nodes) + { + if (node.SelectNodes("PackageReference").Count > 0) + { + return node; + } + } + + return nodes[0]; + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/IAbpModuleFileManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/IAbpModuleFileManager.cs new file mode 100644 index 0000000000..7eb2060e48 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/IAbpModuleFileManager.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.Studio.Packages.Modifying +{ + public interface IAbpModuleFileManager + { + Task AddDependency(string filePath, string moduleToAdd); + + Task ExtractModuleNameWithNamespace(string filePath); + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs new file mode 100644 index 0000000000..af8c466c17 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Studio.Package; + +namespace Volo.Abp.Studio.Packages.Modifying +{ + public interface ICsprojFileManager + { + Task AddProjectReferenceAsync(string filePath, string projectToReference); + + Task AddPackageReferenceAsync(string filePath, string packageName, string version); + + Task ConvertPackageReferenceToProjectReferenceAsync(string filePath, string projectToReference); + + Task GetTargetFrameworkAsync(string filePath); + + Task> GetDependencyListAsync(string filePath); + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/INugetSourceCodeStore.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/INugetSourceCodeStore.cs new file mode 100644 index 0000000000..6fce22dbe0 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/INugetSourceCodeStore.cs @@ -0,0 +1,18 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.Studio.Nuget +{ + public interface INugetSourceCodeStore + { + Task GetCachedSourceCodeFilePathAsync(string name, + string type, + string version = null, + bool includePreReleases = false); + + Task GetCachedDllFilePathAsync(string name, + string type, + string version = null, + bool includePreReleases = false, + bool includeDependencies = false); + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs new file mode 100644 index 0000000000..b4a21560cb --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs @@ -0,0 +1,36 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using Volo.Abp.Cli.Utils; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.Helpers; + +namespace Volo.Abp.Studio.Nuget +{ + public class NugetPackageCacheManager : ITransientDependency + { + private readonly ICmdHelper _cmdHelper; + + public NugetPackageCacheManager(ICmdHelper cmdHelper) + { + _cmdHelper = cmdHelper; + } + + public async Task CachePackageAsync(string packageName, string version, bool deleteAfter = true) + { + var temporaryFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + + Directory.CreateDirectory(temporaryFolder); + + _cmdHelper.RunCmdAndGetOutput("dotnet new console -lang c#", temporaryFolder); + _cmdHelper.RunCmdAndGetOutput($"dotnet add package {packageName} --version {version}", temporaryFolder); + + if (deleteAfter) + { + Directory.Delete(temporaryFolder, true); + } + + return temporaryFolder; + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs new file mode 100644 index 0000000000..c81d95b2dc --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs @@ -0,0 +1,163 @@ +using System; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Cli.NuGet; +using Volo.Abp.Cli.ProjectBuilding; +using Volo.Abp.Cli.Utils; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.Helpers; +using Volo.Abp.Studio.Modules; + +namespace Volo.Abp.Studio.Nuget +{ + [Dependency(ReplaceServices = true)] + public class NugetSourceCodeStore : ISourceCodeStore, INugetSourceCodeStore, ITransientDependency + { + private readonly NuGetService _nuGetService; + private readonly NugetPackageCacheManager _nugetPackageCacheManager; + private readonly ICmdHelper _cmdHelper; + + public NugetSourceCodeStore( + NuGetService nuGetService, + NugetPackageCacheManager nugetPackageCacheManager, + ICmdHelper cmdHelper) + { + _nuGetService = nuGetService; + _nugetPackageCacheManager = nugetPackageCacheManager; + _cmdHelper = cmdHelper; + } + + public async Task GetAsync( + string name, + string type, + string version = null, + string templateSource = null, + bool includePreReleases = false) + { + name = GetNugetPackageName(name, type); + + var latestVersion = await GetLatestVersionAsync(name, includePreReleases); + + version ??= latestVersion; + + var localCachedFilePath = await GetLocalCacheSourceCodeFilePathInternal(name, version); + + if (localCachedFilePath == null) + { + return null; + } + + return new TemplateFile(await File.ReadAllBytesAsync(localCachedFilePath), version, latestVersion, version); + } + + public async Task GetCachedSourceCodeFilePathAsync(string name, string type, string version = null, + bool includePreReleases = false) + { + name = GetNugetPackageName(name, type); + + version ??= await GetLatestVersionAsync(name, includePreReleases); + + return await GetLocalCacheSourceCodeFilePathInternal(name, version); + } + + public async Task GetCachedDllFilePathAsync(string name, string type, string version = null, bool includePreReleases = false, bool includeDependencies = false) + { + if (type == SourceCodeTypes.Template) + { + name = TemplateNugetPackageInfoProvider.GetNugetPackageName(name); + } + + version ??= await GetLatestVersionAsync(name, includePreReleases); + + var localDllFolder = Path.Combine( + GetLocalNugetCachePath(), + name, + version, + "lib"); + + if (!Directory.Exists(localDllFolder) || + (includeDependencies && !Directory.GetFiles(localDllFolder, $"*Volo.Abp.Studio.ModuleInstaller.dll", SearchOption.AllDirectories).Any())) + { + if (includeDependencies) + { + var temporaryFolder = await _nugetPackageCacheManager.CachePackageAsync(name, version, false); + + var outputFolder = Path.GetDirectoryName( + Directory + .GetFiles(localDllFolder, $"*{name}.dll", SearchOption.AllDirectories) + .First() + ); + + _cmdHelper.RunCmdAndGetOutput($"dotnet build -o {outputFolder}", temporaryFolder); + + Directory.Delete(temporaryFolder, true); + } + else + { + await _nugetPackageCacheManager.CachePackageAsync(name, version); + } + } + + if (!Directory.Exists(localDllFolder)) + { + return null; + } + + return Directory.GetFiles(localDllFolder, $"{name}.dll", SearchOption.AllDirectories).FirstOrDefault(); + } + + private async Task GetLatestVersionAsync(string nugetPackage, bool includePreReleases) + { + var v = await _nuGetService.GetLatestVersionOrNullAsync(nugetPackage, includePreReleases); + + return v.ToString(); + } + + private async Task GetLocalCacheSourceCodeFilePathInternal(string name, string version) + { + var localCacheFile = Path.Combine( + GetLocalNugetCachePath(), + name, + version, + "content", + $"{name}.zip"); + + + if (!File.Exists(localCacheFile)) + { + await _nugetPackageCacheManager.CachePackageAsync(name, version); + + if (!File.Exists(localCacheFile)) + { + return null; + } + } + + return localCacheFile; + } + + private string GetLocalNugetCachePath() + { + return Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), + ".nuget", + "packages"); + } + + private string GetNugetPackageName(string name, string type) + { + if (type == SourceCodeTypes.Template) + { + return TemplateNugetPackageInfoProvider.GetNugetPackageName(name); + } + + if (type == SourceCodeTypes.Module) + { + return name + ModuleConsts.SourceCorePackagePostfix; + } + + return name; + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/TemplateNugetPackageInfoProvider.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/TemplateNugetPackageInfoProvider.cs new file mode 100644 index 0000000000..03765f96c1 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/TemplateNugetPackageInfoProvider.cs @@ -0,0 +1,18 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.Studio.Nuget +{ + public static class TemplateNugetPackageInfoProvider + { + public static string GetNugetPackageName(string template) + { + switch (template) + { + case "app": + return "Cotur.Abp.Basic.Template"; // todo: replace with real template! + default: + return null; + } + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageDependency.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageDependency.cs new file mode 100644 index 0000000000..1a9d2e1396 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageDependency.cs @@ -0,0 +1,30 @@ +using System; +using System.IO; + +namespace Volo.Abp.Studio.Package +{ + public class PackageDependency + { + public ReferenceType Type { get; } + + public string Name { get; } + + public string Version { get; } + + public string Path { get; } + + public PackageDependency(string name, string version) + { + Type = ReferenceType.Package; + Name = name; + Version = version; + } + + public PackageDependency(string path) + { + Type = ReferenceType.Project; + Path = path; + Name = System.IO.Path.GetFileName(path).RemovePostFix(".csproj"); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageTypes.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageTypes.cs new file mode 100644 index 0000000000..cc5870f783 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageTypes.cs @@ -0,0 +1,244 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Studio.Packages +{ + public static class PackageTypes + { + public const string Domain = "lib.domain"; + public const string DomainShared = "lib.domain-shared"; + public const string Application = "lib.application"; + public const string ApplicationContracts = "lib.application-contracts"; + public const string EntityFrameworkCore = "lib.ef"; + public const string MongoDB = "lib.mongodb"; + public const string HttpApi = "lib.http-api"; + public const string HttpApiClient = "lib.http-api-client"; + public const string Mvc = "lib.mvc"; + public const string Blazor = "lib.blazor"; + public const string BlazorWebAssembly = "lib.blazor-wasm"; + public const string BlazorServer = "lib.blazor-server"; + public const string Test = "lib.test"; + + public const string HostHttpApi = "host.http-api"; + public const string HostMvc = "host.mvc"; + public const string HostBlazorWebAssembly = "host.blazor-wasm"; + public const string HostBlazorServer = "host.blazor-server"; + public const string HostApiGatewayOcelot = "host.api-gateway-ocelot"; + + public static string CalculateDefaultPackageNameForModule( + string moduleName, + string packageType) + { + switch (packageType) + { + case Domain: + return moduleName + ".Domain"; + case DomainShared: + return moduleName + ".Domain.Shared"; + case Application: + return moduleName + ".Application"; + case ApplicationContracts: + return moduleName + ".Application.Contracts"; + case EntityFrameworkCore: + return moduleName + ".EntityFrameworkCore"; + case HttpApi: + return moduleName + ".HttpApi"; + case HttpApiClient: + return moduleName + ".HttpApi.Client"; + case MongoDB: + return moduleName + ".MongoDB"; + case Mvc: + return moduleName + ".Web"; + case Blazor: + return moduleName + ".Blazor"; + case BlazorWebAssembly: + return moduleName + ".Blazor.WebAssembly"; + case BlazorServer: + return moduleName + ".Blazor.Server"; + case HostHttpApi: + return moduleName + ".HttpApi.Host"; + case HostMvc: + return moduleName + ".Web.Host"; + case HostBlazorWebAssembly: + return moduleName + ".Blazor.Client"; + case HostBlazorServer: + return moduleName + ".Blazor.Host"; + case HostApiGatewayOcelot: + return moduleName + ".Gateway"; + default: + throw new AbpStudioException(AbpStudioErrorCodes.PackageNameMustBeSpecified); + } + } + + public static bool IsHostProject(string packageType) + { + return + packageType == HostMvc || + packageType == HostHttpApi || + packageType == HostBlazorWebAssembly || + packageType == HostBlazorServer || + packageType == HostApiGatewayOcelot; + } + + public static bool IsUiProject(string packageType) + { + return + packageType == Mvc || + packageType == BlazorWebAssembly || + packageType == BlazorServer; + } + + public static string GetHostTypeOfUi(string packageType, bool useHostBlazorServerForMvcPackages = false) + { + return packageType switch + { + Mvc => !useHostBlazorServerForMvcPackages ? HostMvc : HostBlazorServer, + BlazorWebAssembly => HostBlazorWebAssembly, + BlazorServer => HostBlazorServer, + _ => null + }; + } + + public static List GetSuggestedInstallationType(string packageType) + { + if (packageType == DomainShared) + { + return new List() + { + Domain, + DomainShared, + ApplicationContracts + }; + } + + if (packageType == Domain) + { + return new List() + { + Domain, + Application + }; + } + + if (packageType == ApplicationContracts) + { + return new List() + { + Application, + ApplicationContracts, + Mvc, + Blazor, + BlazorServer, + BlazorWebAssembly, + HttpApi + }; + } + + if (packageType == Application) + { + return new List() + { + Application, + HostMvc, + HostBlazorServer, + HostBlazorWebAssembly, + HostHttpApi + }; + } + + if (packageType == EntityFrameworkCore) + { + return new List() + { + EntityFrameworkCore, + HostMvc, + HostBlazorServer, + HostBlazorWebAssembly, + HostHttpApi + }; + } + + if (packageType == MongoDB) + { + return new List() + { + MongoDB, + HostMvc, + HostBlazorServer, + HostBlazorWebAssembly, + HostHttpApi + }; + } + + if (packageType == HttpApi) + { + return new List() + { + HttpApi, + HostMvc, + HostBlazorServer, + HostBlazorWebAssembly, + HostHttpApi + }; + } + + if (packageType == HttpApiClient) + { + return new List() + { + HttpApiClient, + HostMvc, + HostBlazorServer, + HostBlazorWebAssembly, + HostHttpApi + }; + } + + if (packageType == Mvc) + { + return new List() + { + Mvc, + HostMvc + }; + } + + if (packageType == Blazor) + { + return new List() + { + Blazor, + BlazorServer, + BlazorWebAssembly + }; + } + + if (packageType == BlazorServer) + { + return new List() + { + BlazorServer, + HostBlazorServer + }; + } + + if (packageType == BlazorWebAssembly) + { + return new List() + { + BlazorWebAssembly, + HostBlazorWebAssembly + }; + } + + if (packageType == Test) + { + return new List() + { + Test + }; + } + + return new List(); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/ReferenceType.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/ReferenceType.cs new file mode 100644 index 0000000000..5c4d83b2f9 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/ReferenceType.cs @@ -0,0 +1,8 @@ +namespace Volo.Abp.Studio.Package +{ + public enum ReferenceType + { + Project = 1, + Package = 2 + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/DotnetSlnFileModifierService.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/DotnetSlnFileModifierService.cs new file mode 100644 index 0000000000..5fadc93569 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/DotnetSlnFileModifierService.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Abstractions; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.Helpers; + +namespace Volo.Abp.Studio.Solution +{ + public class DotnetSlnFileModifierService : IDotnetSlnFileModifierService, ITransientDependency + { + public IFileSystem FileSystem { get; } + + public DotnetSlnFileModifierService(IFileSystem fileSystem) + { + FileSystem = fileSystem; + } + + public async Task AddProjectAsync(string slnFilePath, string projectPath, string slnTargetFolder = "src") + { + var projectName = FileSystem.Path.GetFileName(projectPath).RemovePostFix(".csproj"); + var folderId = await GetOrAddFolderIdAsync(slnFilePath, slnTargetFolder); + var slnFileLines = (await FileSystem.File.ReadAllTextAsync(slnFilePath)) + .Split(Environment.NewLine).ToList(); + + if (slnFileLines.Any(l => l.Contains($"\"{projectName}\"") && l.Contains("9A19103F-16F7-4668-BE54-9A1E7A4F7556"))) + { + throw new AbpStudioException(AbpStudioErrorCodes.ProjectWithSameNameAlreadyExistInTheSolutionFile) + .WithData("Solution Path", slnFilePath) + .WithData("Project Name", projectName); + } + + var projectId = Guid.NewGuid().ToString(); + var relativeProjectPath = PathHelper.GetRelativePath(slnFilePath, projectPath).Replace("/", "\\"); + var newProjectLine = "Project(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"" + projectName + "\"," + + " \"" + relativeProjectPath + "\", \"{" + projectId + "}\"" + + Environment.NewLine + "EndProject"; + + slnFileLines.InsertAfter(l => l.Trim().Equals("EndProject"), newProjectLine); + + var newPostSolutionLine = + " {" + projectId + "}.Debug|Any CPU.ActiveCfg = Debug|Any CPU" + Environment.NewLine + + " {" + projectId + "}.Debug|Any CPU.Build.0 = Debug|Any CPU" + Environment.NewLine + + " {" + projectId + "}.Release|Any CPU.ActiveCfg = Release|Any CPU" + Environment.NewLine + + " {" + projectId + "}.Release|Any CPU.Build.0 = Release|Any CPU"; + + if (!slnFileLines.Any(l => l.Contains("GlobalSection") && l.Contains("ProjectConfigurationPlatforms"))) + { + slnFileLines.InsertBefore(l => l.Trim().Equals("EndGlobal"), " GlobalSection(ProjectConfigurationPlatforms) = postSolution"); + slnFileLines.InsertBefore(l => l.Trim().Equals("EndGlobal"), " EndGlobalSection"); + } + + slnFileLines.InsertAfter(l => l.Contains("GlobalSection") && l.Contains("ProjectConfigurationPlatforms"), + newPostSolutionLine); + + var newPreSolutionLine = + " {" + projectId + "} = {" + folderId + "}"; + + + if (!slnFileLines.Any(l => l.Contains("GlobalSection") && l.Contains("NestedProjects"))) + { + slnFileLines.InsertBefore(l => l.Trim().Equals("EndGlobal"), " GlobalSection(NestedProjects) = preSolution"); + slnFileLines.InsertBefore(l => l.Trim().Equals("EndGlobal"), " EndGlobalSection"); + } + + slnFileLines.InsertAfter(l => l.Contains("GlobalSection") && l.Contains("NestedProjects"), newPreSolutionLine); + + await FileSystem.File.WriteAllTextAsync(slnFilePath, string.Join(Environment.NewLine, slnFileLines)); + } + + private async Task GetOrAddFolderIdAsync(string solutionFile, string folderName, string parentFolderId = null) + { + if (folderName.Contains("/") && parentFolderId == null) + { + var parents = folderName.Split("/").SkipLast(1).JoinAsString("/"); + folderName = folderName.Split("/").Last(); + + parentFolderId = await GetOrAddFolderIdAsync(solutionFile, parents); + } + + var file = await FileSystem.File.ReadAllTextAsync(solutionFile); + var lines = file.Split(Environment.NewLine).ToList(); + string folderId; + + var folderLineIndex = lines.FindIndex(l => + l.Contains("2150E333-8FDC-42A3-9474-1A3956D46DE8") && l.Contains("\"" + folderName + "\"")); + + if (folderLineIndex < 0) + { + folderId = Guid.NewGuid().ToString(); + var newFolderLine = "Project(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"" + folderName + "\", \"" + + folderName + "\", \"{" + folderId + "}\"" + + Environment.NewLine + "EndProject"; + + if (lines.Any(l => l.Trim().Equals("EndProject"))) + { + lines.InsertAfter(l => l.Trim().Equals("EndProject"), newFolderLine); + } + else + { + lines.InsertAfter(l => l.StartsWith("Microsoft Visual Studio Solution File"), newFolderLine); + } + + if (parentFolderId != null && lines.Any(l=>l.Contains("GlobalSection") && l.Contains("NestedProjects"))) + { + var newPreSolutionLine = + " {" + folderId + "} = {" + parentFolderId + "}"; + + lines.InsertAfter(l => l.Contains("GlobalSection") && l.Contains("NestedProjects"), + newPreSolutionLine); + } + + await FileSystem.File.WriteAllTextAsync(solutionFile, string.Join(Environment.NewLine, lines)); + } + else + { + folderId = lines[folderLineIndex].Replace("\"", " ").Replace("{", " ").Replace("}", " ").TrimEnd() + .Split(" ").Last(); + } + + return folderId; + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/IDotnetSlnFileModifierService.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/IDotnetSlnFileModifierService.cs new file mode 100644 index 0000000000..5bb26bf9d9 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/IDotnetSlnFileModifierService.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.Studio.Solution +{ + public interface IDotnetSlnFileModifierService + { + Task AddProjectAsync(string slnFile, string projectPath, string slnTargetFolder = "src"); + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/ISolutionFileModuleAdder.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/ISolutionFileModuleAdder.cs new file mode 100644 index 0000000000..4f51330db7 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/ISolutionFileModuleAdder.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.Studio.Solution +{ + public interface ISolutionFileModuleAdder + { + Task AddAsync(string TargetModule, string ModuleName); + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/SolutionFileModuleAdder.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/SolutionFileModuleAdder.cs new file mode 100644 index 0000000000..cafd0f9281 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/SolutionFileModuleAdder.cs @@ -0,0 +1,42 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.Modules; + +namespace Volo.Abp.Studio.Solution +{ + public class SolutionFileModuleAdder : ISolutionFileModuleAdder, ITransientDependency + { + private readonly IDotnetSlnFileModifierService _dotnetSlnFileModifierService; + + public SolutionFileModuleAdder(IDotnetSlnFileModifierService dotnetSlnFileModifierService) + { + _dotnetSlnFileModifierService = dotnetSlnFileModifierService; + } + + public async Task AddAsync(string TargetModule, string ModuleName) + { + var targetFolder = Path.Combine(Path.GetDirectoryName(TargetModule), "modules", ModuleName);; + var slnFile = TargetModule.RemovePostFix(ModuleConsts.FileExtension) + ".sln"; + var moduleSrcFolder = Path.Combine(targetFolder, "src"); + var moduleTestFolder = Path.Combine(targetFolder, "test"); + + await AddProjectsUnderDirectoryToSolutionFile(slnFile, moduleSrcFolder, $"modules/{ModuleName}"); + await AddProjectsUnderDirectoryToSolutionFile(slnFile, moduleTestFolder, $"test/{ModuleName}.Tests"); + } + + private async Task AddProjectsUnderDirectoryToSolutionFile( + string slnFile, + string directory, + string slnTargetFolder) + { + var projects = Directory.GetFiles(directory, "*.csproj", SearchOption.AllDirectories); + + foreach (var project in projects) + { + await _dotnetSlnFileModifierService.AddProjectAsync(slnFile, project, slnTargetFolder); + } + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Xml/XmlFileManagerBase.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Xml/XmlFileManagerBase.cs new file mode 100644 index 0000000000..74eb5379c2 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Xml/XmlFileManagerBase.cs @@ -0,0 +1,51 @@ +using System; +using System.IO; +using System.IO.Abstractions; +using System.Threading.Tasks; +using System.Xml; +using System.Xml.Linq; +using Volo.Abp.Threading; + +namespace Volo.Abp.Studio.Xml +{ + public abstract class XmlFileManagerBase + { + public IFileSystem FileSystem { get; set; } + + public ICancellationTokenProvider CancellationTokenProvider { get; set; } + + protected async Task GetXmlDocumentAsync(string filePath) + { + try + { + var doc = new XmlDocument() { PreserveWhitespace = true }; + doc.Load(GenerateStreamFromString(await FileSystem.File.ReadAllTextAsync(filePath))); + return doc; + } + catch (Exception ex) + { + throw new AbpException($"Error while reading {filePath} as XML document.", innerException: ex); + } + } + + protected async Task SaveXmlDocumentAsync(string filePath, XmlDocument rootNode) + { + await SaveFileContentAsync(filePath, XDocument.Parse(rootNode.OuterXml).ToString()); + } + + protected async Task SaveFileContentAsync(string filePath, string content) + { + await FileSystem.File.WriteAllTextAsync(filePath, content, CancellationTokenProvider.Token); + } + + private MemoryStream GenerateStreamFromString(string s) + { + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + writer.Write(s); + writer.Flush(); + stream.Position = 0; + return stream; + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo.Abp.Studio.Domain.Shared.csproj b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo.Abp.Studio.Domain.Shared.csproj new file mode 100644 index 0000000000..62daa81f1a --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo.Abp.Studio.Domain.Shared.csproj @@ -0,0 +1,15 @@ + + + + + + netstandard2.0 + + + + + + + + + diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioDomainSharedModule.cs b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioDomainSharedModule.cs new file mode 100644 index 0000000000..9693bc2577 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioDomainSharedModule.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Cli; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Studio +{ + [DependsOn( + typeof(AbpCliCoreModule) + )] + public class AbpStudioDomainSharedModule : AbpModule + { + + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioErrorCodes.cs b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioErrorCodes.cs new file mode 100644 index 0000000000..42d041fa8e --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioErrorCodes.cs @@ -0,0 +1,31 @@ +namespace Volo.Abp.Studio +{ + public static class AbpStudioErrorCodes + { + public const string SolutionAlreadyExists = "AbpStudio:SolutionAlreadyExists"; + public const string ModuleAlreadyExistsInTheSolution = "AbpStudio:ModuleAlreadyExistsInTheSolution"; + public const string ModuleFileAlreadyExists = "AbpStudio:ModuleFileAlreadyExists"; + public const string IncorrectFileFormat = "AbpStudio:IncorrectFileFormat"; + public const string ModuleNotFound = "AbpStudio:ModuleNotFound"; + public const string ModuleNotSpecified = "AbpStudio:ModuleNotSpecified"; + public const string SolutionNotSpecified = "AbpStudio:SolutionNotSpecified"; + public const string ProjectAlreadyExistInTheModule = "AbpStudio:ProjectAlreadyExistInTheModule"; + public const string IncorrectSolutionFileFormat = "AbpStudio:IncorrectSolutionFileFormat"; + public const string FolderNotFound = "AbpStudio:FolderNotFound"; + public const string ProjectWithSameNameAlreadyExistInTheSolutionFile = "AbpStudio:ProjectWithSameNameAlreadyExistInTheSolutionFile"; + public const string UndefinedPackageTemplate = "AbpStudio:UndefinedPackageTemplate"; + public const string PackageTemplateNotSpecified = "AbpStudio:PackageTemplateNotSpecified"; + public const string PackageNameMustBeSpecified = "AbpStudio:PackageNameMustBeSpecified"; + public const string FileAlreadyExists = "AbpStudio:FileAlreadyExists"; + public const string PackageNotSpecified = "AbpStudio:PackageNotSpecified"; + public const string DbmsMustBeSpecified = "AbpStudio:DbmsMustBeSpecified"; + public const string UserNotLoggedIn = "AbpStudio:UserNotLoggedIn"; + public const string PackageAlreadyExist = "AbpStudio:PackageAlreadyExist"; + public const string AbpModuleFileNotFound = "AbpStudio:AbpModuleFileNotFound"; + public const string DllNotFound = "AbpStudio:DllNotFound"; + public const string PackageNotFound = "AbpStudio:PackageNotFound"; + public const string FileNotFound = "AbpStudio:FileNotFound"; + public const string IncorrectFolderName = "AbpStudio:IncorrectFolderName"; + public const string ModuleAlreadyInstalled = "AbpStudio:ModuleAlreadyInstalled"; + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Modules/ModuleConsts.cs b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Modules/ModuleConsts.cs new file mode 100644 index 0000000000..b2c9733720 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Modules/ModuleConsts.cs @@ -0,0 +1,18 @@ +namespace Volo.Abp.Studio.Modules +{ + public static class ModuleConsts + { + public const string FileExtension = ".abpmdl.json"; + public const string InstallerPackagePostfix = ".Installer"; + public const string SourceCorePackagePostfix = ".SourceCode"; + public const string Packages = "packages"; + + public static class Layers //TODO: Moving to PackageTypes + { + public const string Domain = "lib.domain"; + public const string DomainShared = "lib.domain.shared"; + public const string Application = "lib.application"; + public const string ApplicationContracts = "lib.application.contracts"; + } + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Package/PackageReferenceCompatibility.cs b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Package/PackageReferenceCompatibility.cs new file mode 100644 index 0000000000..70c51c36e2 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Package/PackageReferenceCompatibility.cs @@ -0,0 +1,13 @@ +namespace Volo.Abp.Studio.Packages.Referencing +{ + public enum PackageReferenceCompatibility + { + Unknown, + DDD_Compatible, + Compatible, + TestProject, + IndirectlyReferenced, + DirectlyReferenced, + CircularReference + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo.Abp.Studio.ModuleInstaller.Abstractions.csproj b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo.Abp.Studio.ModuleInstaller.Abstractions.csproj new file mode 100644 index 0000000000..8076b60746 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo.Abp.Studio.ModuleInstaller.Abstractions.csproj @@ -0,0 +1,15 @@ + + + + + + netstandard2.0 + + + + + + + + + diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/AbpStudioModuleInstallerAbstractionsModule.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/AbpStudioModuleInstallerAbstractionsModule.cs new file mode 100644 index 0000000000..c9e68ec940 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/AbpStudioModuleInstallerAbstractionsModule.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Modularity; +using Volo.Abp.Studio.Analyzing; + +namespace Volo.Abp.Studio +{ + [DependsOn( + typeof(AbpStudioAnalyzingAbstractionsModule) + )] + public class AbpStudioModuleInstallerAbstractionsModule : AbpModule + { + + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Analyzing/AnalyzingOptions.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Analyzing/AnalyzingOptions.cs new file mode 100644 index 0000000000..7296dfce74 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Analyzing/AnalyzingOptions.cs @@ -0,0 +1,45 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Analyzing +{ + public class AnalyzingOptions + { + public bool Force { get; set; } = false; + + [CanBeNull] + public string AnalyzeConfigurationFile { get; set; } + + [CanBeNull] + public string SettingNamePrefix { get; set; } + + [CanBeNull] + public string FeatureNamePrefix { get; set; } + + // Combines two options + // The second option has more priority + public static AnalyzingOptions Combine([CanBeNull] AnalyzingOptions first, [CanBeNull] AnalyzingOptions second) + { + if (second == null && first == null) + { + return new AnalyzingOptions(); + } + + if (second == null) + { + return first; + } + + if (first == null) + { + return second; + } + + return new AnalyzingOptions + { + AnalyzeConfigurationFile = second.AnalyzeConfigurationFile ?? first.AnalyzeConfigurationFile, + SettingNamePrefix = second.SettingNamePrefix ?? first.SettingNamePrefix, + FeatureNamePrefix = second.FeatureNamePrefix ?? first.FeatureNamePrefix + }; + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/EfCoreConfigurationMethodDeclaration.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/EfCoreConfigurationMethodDeclaration.cs new file mode 100644 index 0000000000..5b69a49cbd --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/EfCoreConfigurationMethodDeclaration.cs @@ -0,0 +1,18 @@ +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.ModuleInstalling +{ + public class EfCoreConfigurationMethodDeclaration + { + public string Namespace { get; } + + public string MethodName { get; } + + public EfCoreConfigurationMethodDeclaration([NotNull] string nameSpace, [NotNull] string methodName) + { + Namespace = Check.NotNullOrEmpty(nameSpace, nameof(nameSpace)); + MethodName = Check.NotNullOrEmpty(methodName, nameof(methodName)); + } + + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/IModuleInstallingPipelineBuilder.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/IModuleInstallingPipelineBuilder.cs new file mode 100644 index 0000000000..1112328675 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/IModuleInstallingPipelineBuilder.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.Studio.ModuleInstalling +{ + public interface IModuleInstallingPipelineBuilder + { + Task BuildAsync(ModuleInstallingContext context); + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingContext.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingContext.cs new file mode 100644 index 0000000000..350359c551 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingContext.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.IO; +using JetBrains.Annotations; +using Volo.Abp.Studio.Packages; + +namespace Volo.Abp.Studio.ModuleInstalling +{ + public class ModuleInstallingContext + { + public string ModuleName { get; set; } + + public string TargetModule { get; set; } + + public bool WithSourceCode { get; set; } + + public bool AddToSolutionFile { get; set; } + + public string Version { get; set; } + + public List EfCoreConfigurationMethodDeclarations { get; } + + public List TargetModulePackages { get; protected set; } + + public List ReferenceModulePackages { get; protected set; } + + public Dictionary Options { get; } + + public IServiceProvider ServiceProvider { get; } + + public ModuleInstallingContext( + string moduleName, + string targetModule, + bool withSourceCode, + bool addToSolutionFile, + string version, + Dictionary options, + IServiceProvider serviceProvider) + { + ModuleName = moduleName; + TargetModule = targetModule; + WithSourceCode = withSourceCode; + AddToSolutionFile = addToSolutionFile; + Version = version; + Options = options; + + TargetModulePackages = new List(); + ReferenceModulePackages = new List(); + + EfCoreConfigurationMethodDeclarations = new List(); + + ServiceProvider = Check.NotNull(serviceProvider, nameof(serviceProvider)); + } + + public void AddEfCoreConfigurationMethodDeclaration(params EfCoreConfigurationMethodDeclaration[] methodNames) + { + foreach (var methodName in methodNames) + { + Check.NotNull(methodName, nameof(methodName)); + + EfCoreConfigurationMethodDeclarations.Add(methodName); + } + } + + public void SetReferenceModulePackages([NotNull] List referenceModulePackages) + { + Check.NotNull(referenceModulePackages, nameof(referenceModulePackages)); + + ReferenceModulePackages = referenceModulePackages; + } + + public void SetTargetModulePackages([NotNull] List targetModulePackages) + { + Check.NotNull(targetModulePackages, nameof(targetModulePackages)); + + TargetModulePackages = targetModulePackages; + } + + public string GetTargetSourceCodeFolder() + { + return CalculateTargetSourceCodeFolder(TargetModule, ModuleName); + } + + public static string CalculateTargetSourceCodeFolder(string targetModule, string moduleName) + { + return Path.Combine(Path.GetDirectoryName(targetModule), "modules", moduleName); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipeline.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipeline.cs new file mode 100644 index 0000000000..4582a4ac8b --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipeline.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Volo.Abp.Studio.ModuleInstalling +{ + public class ModuleInstallingPipeline + { + public ModuleInstallingContext Context { get; } + + public List Steps { get; } + + public ModuleInstallingPipeline(ModuleInstallingContext context) + { + Context = context; + Steps = new List(); + } + + public async Task ExecuteAsync() + { + foreach (var step in Steps) + { + await step.ExecuteAsync(Context); + } + } + + public void Add(ModuleInstallingPipelineStep step) + { + Steps.Add(step); + } + + public void Remove(Type stepType) + { + Steps.RemoveAll(step => step.GetType() == stepType); + } + + public void Replace(Type stepType, ModuleInstallingPipelineStep step) + { + Steps.ReplaceOne(step => step.GetType() == stepType , step); + } + + public void InsertAfter(Type stepType, ModuleInstallingPipelineStep step) + { + Steps.InsertAfter(step => step.GetType() == stepType , step); + } + + public void InsertBefore(Type stepType, ModuleInstallingPipelineStep step) + { + Steps.InsertBefore(step => step.GetType() == stepType , step); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineStep.cs new file mode 100644 index 0000000000..b98d32b32a --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineStep.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.Studio.ModuleInstalling +{ + public abstract class ModuleInstallingPipelineStep + { + public abstract Task ExecuteAsync(ModuleInstallingContext context); + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/IModuleInstallingOptionProvider.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/IModuleInstallingOptionProvider.cs new file mode 100644 index 0000000000..ac557d5a51 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/IModuleInstallingOptionProvider.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Volo.Abp.Studio.ModuleInstalling.Options +{ + public interface IModuleInstallingOptionProvider + { + Task> GetAsync(); + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOption.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOption.cs new file mode 100644 index 0000000000..f8725e1e93 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOption.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.ModuleInstalling.Options +{ + public class ModuleInstallingOption + { + public string Name { get; set; } + + public string Description { get; set; } + + public ModuleInstallingOptionType Type { get; set; } + + public Dictionary Values { get; set; } + + public ModuleInstallingOption( + [NotNull] string name, + [NotNull] string description, + [NotNull] ModuleInstallingOptionType type, + [CanBeNull] Dictionary values = null) + { + Name = Check.NotNullOrWhiteSpace(name, nameof(name)); + Description = Check.NotNullOrWhiteSpace(description, nameof(description)); + Type = type; + Values = values ?? new Dictionary(); + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOptionType.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOptionType.cs new file mode 100644 index 0000000000..140b1339df --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOptionType.cs @@ -0,0 +1,10 @@ +namespace Volo.Abp.Studio.ModuleInstalling.Options +{ + public enum ModuleInstallingOptionType + { + NotSpecified, + Checkbox, + FreeText, + ComboBox + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageConsts.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageConsts.cs new file mode 100644 index 0000000000..05a7abb16e --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageConsts.cs @@ -0,0 +1,9 @@ +namespace Volo.Abp.Studio.Packages +{ + public static class PackageConsts + { + public const string FileExtension = ".abppkg.json"; + + public const string RoleProperty = "role"; + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageHelper.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageHelper.cs new file mode 100644 index 0000000000..daae8d2f77 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageHelper.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using JetBrains.Annotations; + +namespace Volo.Abp.Studio.Packages +{ + public static class PackageHelper + { + public static string GetNameFromPath([NotNull] string path) + { + Check.NotNullOrWhiteSpace(path, nameof(path)); + + return Path + .GetFileName(path) + .RemovePostFix(StringComparison.OrdinalIgnoreCase, PackageConsts.FileExtension); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfo.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfo.cs new file mode 100644 index 0000000000..0a6e939ded --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfo.cs @@ -0,0 +1,27 @@ +using JetBrains.Annotations; +using Volo.Abp.Studio.Analyzing; + +namespace Volo.Abp.Studio.Packages +{ + public class PackageInfo + { + [NotNull] + public string Path { get; } + + [NotNull] + public string Name { get; } + + [CanBeNull] + public string Role { get; } + + [CanBeNull] + public AnalyzingOptions AnalyzingOptions { get; set; } + + public PackageInfo([NotNull] string path, [CanBeNull] string role) + { + Path = Check.NotNullOrWhiteSpace(path, nameof(path)); + Name = PackageHelper.GetNameFromPath(path); + Role = role; + } + } +} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfoWithAnalyze.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfoWithAnalyze.cs new file mode 100644 index 0000000000..efb7950fc2 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfoWithAnalyze.cs @@ -0,0 +1,28 @@ +using JetBrains.Annotations; +using Volo.Abp.Studio.Analyzing.Models; + +namespace Volo.Abp.Studio.Packages +{ + public class PackageInfoWithAnalyze + { + [NotNull] + public string Path { get; } + + [NotNull] + public string Name { get; } + + [CanBeNull] + public string Role { get; } + + [NotNull] + public PackageModel Analyze { get; } + + public PackageInfoWithAnalyze([NotNull] string path, [CanBeNull] string role, [NotNull] PackageModel analyze) + { + Path = Check.NotNullOrWhiteSpace(path, nameof(path)); + Name = PackageHelper.GetNameFromPath(path); + Role = role; + Analyze = Check.NotNull(analyze, nameof(analyze)); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo.Abp.Studio.ModuleInstaller.csproj b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo.Abp.Studio.ModuleInstaller.csproj new file mode 100644 index 0000000000..2d3577e20f --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo.Abp.Studio.ModuleInstaller.csproj @@ -0,0 +1,16 @@ + + + + + + net5.0 + true + + + + + + + + + diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/AbpStudioModuleInstallerModule.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/AbpStudioModuleInstallerModule.cs new file mode 100644 index 0000000000..3450ab8a5c --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/AbpStudioModuleInstallerModule.cs @@ -0,0 +1,16 @@ +using Volo.Abp.Modularity; + +namespace Volo.Abp.Studio +{ + [DependsOn( + typeof(AbpStudioDomainCommonServicesModule), + typeof(AbpStudioModuleInstallerAbstractionsModule) + )] + public class AbpStudioModuleInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + + } + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineBuilderBase.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineBuilderBase.cs new file mode 100644 index 0000000000..ba78031686 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineBuilderBase.cs @@ -0,0 +1,32 @@ +using System.Linq; +using Volo.Abp.Studio.ModuleInstalling.Steps; + +namespace Volo.Abp.Studio.ModuleInstalling +{ + public abstract class ModuleInstallingPipelineBuilderBase + { + protected ModuleInstallingPipeline GetBasePipeline(ModuleInstallingContext context) + { + var pipeline = new ModuleInstallingPipeline(context); + + if (context.WithSourceCode) + { + pipeline.Add(new SourceCodeDownloadStep()); + + if (context.AddToSolutionFile) + { + pipeline.Add(new AddToSolutionFileStep()); + } + } + + pipeline.Add(new PackageReferencingStep()); + + if (context.EfCoreConfigurationMethodDeclarations.Any()) + { + pipeline.Add(new AddEfCoreConfigurationMethodStep()); + } + + return pipeline; + } + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddEfCoreConfigurationMethodStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddEfCoreConfigurationMethodStep.cs new file mode 100644 index 0000000000..54d6ec2cee --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddEfCoreConfigurationMethodStep.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Cli.ProjectModification; +using Volo.Abp.Studio.Packages; +using Volo.Abp.Studio.Packages.Modifying; +using Volo.Abp.Studio.Analyzing.Models.Module; + +namespace Volo.Abp.Studio.ModuleInstalling.Steps +{ + public class AddEfCoreConfigurationMethodStep : ModuleInstallingPipelineStep + { + public override async Task ExecuteAsync(ModuleInstallingContext context) + { + var efCoreProject = context.TargetModulePackages.FirstOrDefault(p => p.Role == PackageTypes.EntityFrameworkCore); + + if (efCoreProject == null) + { + return; + } + + var efCoreProjectCsprojPath = efCoreProject.Path.RemovePostFix(PackageConsts.FileExtension) + ".csproj"; + + var _derivedClassFinder = context.ServiceProvider.GetRequiredService(); + var _dbContextFileBuilderConfigureAdder = context.ServiceProvider.GetRequiredService(); + + var dbContextFile = _derivedClassFinder.Find(efCoreProjectCsprojPath, "AbpDbContext").FirstOrDefault(); + + if (dbContextFile == null) + { + return; + } + + foreach (var declaration in context.EfCoreConfigurationMethodDeclarations) + { + _dbContextFileBuilderConfigureAdder.Add(dbContextFile, declaration.Namespace + ":" + declaration.MethodName); + } + } + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddToSolutionFileStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddToSolutionFileStep.cs new file mode 100644 index 0000000000..2739a62eaf --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddToSolutionFileStep.cs @@ -0,0 +1,16 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Studio.Solution; + +namespace Volo.Abp.Studio.ModuleInstalling.Steps +{ + public class AddToSolutionFileStep : ModuleInstallingPipelineStep + { + public override async Task ExecuteAsync(ModuleInstallingContext context) + { + var _solutionFileModuleAdder = context.ServiceProvider.GetRequiredService(); + + await _solutionFileModuleAdder.AddAsync(context.TargetModule, context.ModuleName); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/PackageReferencingStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/PackageReferencingStep.cs new file mode 100644 index 0000000000..bec9da5a1b --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/PackageReferencingStep.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Studio.Packages; +using Volo.Abp.Studio.Packages.Modifying; +using Volo.Abp.Studio.Analyzing.Models.Module; + +namespace Volo.Abp.Studio.ModuleInstalling.Steps +{ + public class PackageReferencingStep : ModuleInstallingPipelineStep + { + public override async Task ExecuteAsync(ModuleInstallingContext context) + { + var _abpModuleFileManager = context.ServiceProvider.GetRequiredService(); + + foreach (var referencePackage in context.ReferenceModulePackages) + { + var targetPackages = GetTargetPackages(context.TargetModulePackages, referencePackage); + + foreach (var targetPackage in targetPackages) + { + await AddReferenceAsync(context, targetPackage, referencePackage); + + var targetAbpModulePath = FindAbpModuleFile(targetPackage.Path); + + await _abpModuleFileManager.AddDependency(targetAbpModulePath, FindAbpModuleName(referencePackage)); + } + } + } + + private async Task AddReferenceAsync( + ModuleInstallingContext context, + PackageInfo targetPackage, + PackageInfoWithAnalyze referencePackage) + { + var _csprojFileManager = context.ServiceProvider.GetRequiredService(); + var csprojFilePath = targetPackage.Path.RemovePostFix(PackageConsts.FileExtension) + ".csproj"; + + if (context.WithSourceCode) + { + var referenceProjectPath = Directory.GetFiles(context.GetTargetSourceCodeFolder(), + $"*{referencePackage.Name}.csproj", + SearchOption.AllDirectories).FirstOrDefault(); + + if (referenceProjectPath == null) + { + return; + } + + await _csprojFileManager.AddProjectReferenceAsync( + csprojFilePath, + referenceProjectPath); + } + else + { + await _csprojFileManager.AddPackageReferenceAsync( + csprojFilePath, + referencePackage.Name, + context.Version); + } + } + + private string FindAbpModuleFile(string targetPackagePath) + { + return Directory.GetFiles(Path.GetDirectoryName(targetPackagePath), "*Module.cs", + SearchOption.AllDirectories) + .FirstOrDefault(); + } + + private string FindAbpModuleName(PackageInfoWithAnalyze package) + { + var abpModuleModel = package.Analyze.Contents.Where(y => + y.ContentType == AbpModuleModel.ContentTypeName + ).Cast().First(); + + return abpModuleModel.Namespace + "." + abpModuleModel.Name; + } + + private List GetTargetPackages(List targetModulePackages, + PackageInfoWithAnalyze referencePackage) + { + if (PackageTypes.IsHostProject(referencePackage.Role)) + { + return new List(); + } + + if (PackageTypes.IsUiProject(referencePackage.Role)) + { + var useHostBlazorServerForMvcPackages = targetModulePackages.All(p => p.Role != PackageTypes.HostMvc); + var targetHostType = + PackageTypes.GetHostTypeOfUi(referencePackage.Role, useHostBlazorServerForMvcPackages); + + return targetModulePackages.Where(p => p.Role == targetHostType).ToList(); + } + + return targetModulePackages.Where(p => p.Role == referencePackage.Role).ToList(); + } + } +} diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/SourceCodeDownloadStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/SourceCodeDownloadStep.cs new file mode 100644 index 0000000000..f99186d216 --- /dev/null +++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/SourceCodeDownloadStep.cs @@ -0,0 +1,39 @@ +using System; +using System.IO; +using System.IO.Compression; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Cli.ProjectBuilding; +using Volo.Abp.Studio.Nuget; + +namespace Volo.Abp.Studio.ModuleInstalling.Steps +{ + public class SourceCodeDownloadStep : ModuleInstallingPipelineStep + { + public override async Task ExecuteAsync(ModuleInstallingContext context) + { + var _nugetSourceCodeStoreManager = context.ServiceProvider.GetRequiredService(); + + var zipFilePath = await _nugetSourceCodeStoreManager.GetCachedSourceCodeFilePathAsync( + context.ModuleName, + SourceCodeTypes.Module, + context.Version); + + if (zipFilePath == null) + { + throw new AbpStudioException(message: $"Source code not found for {context.ModuleName} (v{context.Version})"); + } + + var targetFolder = context.GetTargetSourceCodeFolder(); + + if (Directory.Exists(targetFolder)) + { + return; + } + + Directory.CreateDirectory(targetFolder); + + ZipFile.ExtractToDirectory(zipFilePath, targetFolder); + } + } +} diff --git a/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpmdl.json b/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpmdl.json new file mode 100644 index 0000000000..da22f33234 --- /dev/null +++ b/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpmdl.json @@ -0,0 +1,111 @@ +{ + "folders": { + "items": { + "src": {}, + "test": {}, + "host": {} + } + }, + "packages": { + "MyCompanyName.MyProjectName.Domain.Shared": { + "path": "src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.Domain": { + "path": "src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.Application.Contracts": { + "path": "src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.Application": { + "path": "src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.EntityFrameworkCore": { + "path": "src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.MongoDB": { + "path": "src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.HttpApi": { + "path": "src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.HttpApi.Client": { + "path": "src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.TestBase": { + "path": "test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.abppkg.json", + "folder": "test" + }, + "MyCompanyName.MyProjectName.EntityFrameworkCore.Tests": { + "path": "test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.abppkg.json", + "folder": "test" + }, + "MyCompanyName.MyProjectName.MongoDB.Tests": { + "path": "test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.abppkg.json", + "folder": "test" + }, + "MyCompanyName.MyProjectName.Domain.Tests": { + "path": "test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.abppkg.json", + "folder": "test" + }, + "MyCompanyName.MyProjectName.Application.Tests": { + "path": "test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.abppkg.json", + "folder": "test" + }, + "MyCompanyName.MyProjectName.HttpApi.Host": { + "path": "host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.abppkg.json", + "folder": "host" + }, + "MyCompanyName.MyProjectName.Web": { + "path": "src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp": { + "path": "test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.abppkg.json", + "folder": "test" + }, + "MyCompanyName.MyProjectName.Web.Host": { + "path": "host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.abppkg.json", + "folder": "host" + }, + "MyCompanyName.MyProjectName.IdentityServer": { + "path": "host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.abppkg.json", + "folder": "host" + }, + "MyCompanyName.MyProjectName.Host.Shared": { + "path": "host/MyCompanyName.MyProjectName.Host.Shared/MyCompanyName.MyProjectName.Host.Shared.abppkg.json", + "folder": "host" + }, + "MyCompanyName.MyProjectName.Web.Unified": { + "path": "host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.abppkg.json", + "folder": "host" + }, + "MyCompanyName.MyProjectName.Blazor": { + "path": "src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.Blazor.Host": { + "path": "host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.abppkg.json", + "folder": "host" + }, + "MyCompanyName.MyProjectName.Blazor.Server": { + "path": "src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.Blazor.WebAssembly": { + "path": "src/MyCompanyName.MyProjectName.Blazor.WebAssembly/MyCompanyName.MyProjectName.Blazor.WebAssembly.abppkg.json", + "folder": "src" + }, + "MyCompanyName.MyProjectName.Blazor.Server.Host": { + "path": "host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.abppkg.json", + "folder": "host" + } + } +} \ No newline at end of file diff --git a/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpsln.json b/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpsln.json new file mode 100644 index 0000000000..3273040f28 --- /dev/null +++ b/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpsln.json @@ -0,0 +1,7 @@ +{ + "modules": { + "MyCompanyName.MyProjectName": { + "path": "MyCompanyName.MyProjectName.abpmdl.json" + } + } +} \ No newline at end of file diff --git a/templates/module/aspnet-core/MyCompanyName.MyProjectName.sln b/templates/module/aspnet-core/MyCompanyName.MyProjectName.sln index ca958e6f89..6541e3d020 100644 --- a/templates/module/aspnet-core/MyCompanyName.MyProjectName.sln +++ b/templates/module/aspnet-core/MyCompanyName.MyProjectName.sln @@ -59,6 +59,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Blazor.Server.Host", "host\MyCompanyName.MyProjectName.Blazor.Server.Host\MyCompanyName.MyProjectName.Blazor.Server.Host.csproj", "{FEA752A1-5B4E-49E9-B1F3-DDC25E41BB52}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Installer", "src\MyCompanyName.MyProjectName.Installer\MyCompanyName.MyProjectName.Installer.csproj", "{BE39FD00-745B-4049-8161-FC129817CBE4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -165,6 +167,10 @@ Global {FEA752A1-5B4E-49E9-B1F3-DDC25E41BB52}.Debug|Any CPU.Build.0 = Debug|Any CPU {FEA752A1-5B4E-49E9-B1F3-DDC25E41BB52}.Release|Any CPU.ActiveCfg = Release|Any CPU {FEA752A1-5B4E-49E9-B1F3-DDC25E41BB52}.Release|Any CPU.Build.0 = Release|Any CPU + {BE39FD00-745B-4049-8161-FC129817CBE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE39FD00-745B-4049-8161-FC129817CBE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE39FD00-745B-4049-8161-FC129817CBE4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE39FD00-745B-4049-8161-FC129817CBE4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -195,6 +201,7 @@ Global {299BE52E-823F-408E-9C6D-7E2F81BA34FF} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} {F0EE5760-262D-456A-AA7C-E84F484A05F6} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} {FEA752A1-5B4E-49E9-B1F3-DDC25E41BB52} = {E400416D-2895-4512-9D17-90681EEC7E0A} + {BE39FD00-745B-4049-8161-FC129817CBE4} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.abppkg.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.abppkg.json new file mode 100644 index 0000000000..7d929dcea4 --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "host.blazor-wasm" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.abppkg.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.abppkg.json new file mode 100644 index 0000000000..a3ceaf2b83 --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "host.blazor-server" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Host.Shared/MyCompanyName.MyProjectName.Host.Shared.abppkg.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Host.Shared/MyCompanyName.MyProjectName.Host.Shared.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Host.Shared/MyCompanyName.MyProjectName.Host.Shared.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.abppkg.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.abppkg.json new file mode 100644 index 0000000000..35f3cbe53c --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "host.http-api" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.abppkg.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.abppkg.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.abppkg.json new file mode 100644 index 0000000000..48875c29cf --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "host.mvc" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.abppkg.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.abppkg.json new file mode 100644 index 0000000000..49032794e2 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application-contracts" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.abppkg.json new file mode 100644 index 0000000000..412567ac33 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.application" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.abppkg.json new file mode 100644 index 0000000000..ef40d81585 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.blazor-server" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebAssembly/MyCompanyName.MyProjectName.Blazor.WebAssembly.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebAssembly/MyCompanyName.MyProjectName.Blazor.WebAssembly.abppkg.json new file mode 100644 index 0000000000..471ef5e067 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebAssembly/MyCompanyName.MyProjectName.Blazor.WebAssembly.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.blazor-wasm" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.abppkg.json new file mode 100644 index 0000000000..19c29b7b8b --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.blazor" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.abppkg.json new file mode 100644 index 0000000000..8b3de05f76 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.domain-shared" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.abppkg.json new file mode 100644 index 0000000000..1d574efe45 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.domain" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.abppkg.json new file mode 100644 index 0000000000..e1c64f0175 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.ef" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.abppkg.json new file mode 100644 index 0000000000..7deef5e383 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api-client" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.abppkg.json new file mode 100644 index 0000000000..515bfe64c4 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/FodyWeavers.xml b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/FodyWeavers.xsd b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyCompanyName.MyProjectName.Installer.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyCompanyName.MyProjectName.Installer.csproj new file mode 100644 index 0000000000..6fd3cf892a --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyCompanyName.MyProjectName.Installer.csproj @@ -0,0 +1,22 @@ + + + + + + + net5.0 + true + + + + + + + + + + + + + + diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyProjectNameInstallerModule.cs b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyProjectNameInstallerModule.cs new file mode 100644 index 0000000000..cc0bcb81a9 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyProjectNameInstallerModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Studio; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace MyCompany.MyProjectName +{ + [DependsOn( + typeof(AbpStudioModuleInstallerModule), + typeof(AbpVirtualFileSystemModule) + )] + public class MyProjectNameInstallerModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyProjectNameInstallerPipelineBuilder.cs b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyProjectNameInstallerPipelineBuilder.cs new file mode 100644 index 0000000000..7d07f90a77 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyProjectNameInstallerPipelineBuilder.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Studio.ModuleInstalling; + +namespace MyCompany.MyProjectName +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices(typeof(IModuleInstallingPipelineBuilder))] + public class MyProjectNameInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency + { + public async Task BuildAsync(ModuleInstallingContext context) + { + return GetBasePipeline(context); + } + } +} diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.abppkg.json new file mode 100644 index 0000000000..8b23fd1e69 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mongodb" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.abppkg.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.abppkg.json new file mode 100644 index 0000000000..930c4018b3 --- /dev/null +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.mvc" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.abppkg.json b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.abppkg.json b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.abppkg.json b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.abppkg.json b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.abppkg.json b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.abppkg.json b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.abppkg.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file