diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectModification/AbpModuleClassFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectModification/AbpModuleClassFinder.cs index c4e0868659..c023a4e082 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectModification/AbpModuleClassFinder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/ProjectModification/AbpModuleClassFinder.cs @@ -11,34 +11,29 @@ namespace Volo.Abp.ProjectModification { public virtual List Find(string csprojFilePath) { - var modules = new List(); + var moduleFilePaths = new List(); var csFiles = GetAllCsFilesUnderDirectory(Path.GetDirectoryName(csprojFilePath), new List()); foreach (var csFile in csFiles) { - var root = CSharpSyntaxTree.ParseText(File.ReadAllText(csFile)).GetRoot(); - - var namespaceSyntaxs = root.DescendantNodes().OfType(); - - foreach (var namespaceSyntax in namespaceSyntaxs) + if (IsDerivedFromAbpModule(csFile)) { - var classDeclarationSyntaxs = namespaceSyntax.DescendantNodes().OfType(); - var syntaxsArray = classDeclarationSyntaxs as ClassDeclarationSyntax[] ?? classDeclarationSyntaxs.ToArray(); - - foreach (var classDeclaration in syntaxsArray) - { - var classDerivedFromAbpModule = classDeclaration.BaseList?.Types.FirstOrDefault(t => t.ToString().Contains("AbpModule")); - - if (classDerivedFromAbpModule != null) - { - modules.Add(csFile); - } - } + moduleFilePaths.Add(csFile); } } - return modules; + return moduleFilePaths; + } + + private bool IsDerivedFromAbpModule(string csFile) + { + var root = CSharpSyntaxTree.ParseText(File.ReadAllText(csFile)).GetRoot(); + var namespaceSyntax = root.DescendantNodes().OfType().First(); + var classDeclaration = (namespaceSyntax.DescendantNodes().OfType()).First(); + + return classDeclaration.BaseList?.Types + .Any(t => t.ToString().Contains("AbpModule")) ?? false; } protected virtual List GetAllCsFilesUnderDirectory(string path, List allCsFileList)