mirror of https://github.com/abpframework/abp.git
3 changed files with 54 additions and 25 deletions
@ -0,0 +1,9 @@ |
|||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace Volo.Abp.Studio.Solution |
||||
|
{ |
||||
|
public interface ISolutionFileModuleAdder |
||||
|
{ |
||||
|
Task AddAsync(string TargetModule, string ModuleName); |
||||
|
} |
||||
|
} |
||||
@ -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); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue