Browse Source

Exclude common build folders when searching for .csproj files

pull/24399/head
maliming 10 months ago
parent
commit
3622ea7b6c
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 29
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/LocalReferenceConverter.cs

29
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/LocalReferenceConverter.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Xml; using System.Xml;
using System.Xml.Linq; using System.Xml.Linq;
@ -12,9 +13,9 @@ namespace Volo.Abp.Cli.ProjectModification;
public class LocalReferenceConverter : ITransientDependency public class LocalReferenceConverter : ITransientDependency
{ {
public ILogger<LocalReferenceConverter> Logger { get; set; } public ILogger<LocalReferenceConverter> Logger { get; set; }
public async Task ConvertAsync( public async Task ConvertAsync(
[NotNull] string directory, [NotNull] string directory,
[NotNull] List<string> localPaths) [NotNull] List<string> localPaths)
@ -26,14 +27,14 @@ public class LocalReferenceConverter : ITransientDependency
var targetProjects = Directory.GetFiles(directory, "*.csproj", SearchOption.AllDirectories); var targetProjects = Directory.GetFiles(directory, "*.csproj", SearchOption.AllDirectories);
Logger.LogInformation($"Converting projects to local reference."); Logger.LogInformation($"Converting projects to local reference.");
foreach (var targetProject in targetProjects) foreach (var targetProject in targetProjects)
{ {
Logger.LogInformation($"Converting to local reference: {targetProject}"); Logger.LogInformation($"Converting to local reference: {targetProject}");
await ConvertProjectToLocalReferences(targetProject, localProjects); await ConvertProjectToLocalReferences(targetProject, localProjects);
} }
Logger.LogInformation($"Converted {targetProjects.Length} projects to local references."); Logger.LogInformation($"Converted {targetProjects.Length} projects to local references.");
} }
@ -41,14 +42,14 @@ public class LocalReferenceConverter : ITransientDependency
{ {
var xmlDocument = new XmlDocument() { PreserveWhitespace = true }; var xmlDocument = new XmlDocument() { PreserveWhitespace = true };
xmlDocument.Load(GenerateStreamFromString(File.ReadAllText(targetProject))); xmlDocument.Load(GenerateStreamFromString(File.ReadAllText(targetProject)));
var matchedNodes = xmlDocument.SelectNodes($"/Project/ItemGroup/PackageReference[@Include]"); var matchedNodes = xmlDocument.SelectNodes($"/Project/ItemGroup/PackageReference[@Include]");
if (matchedNodes == null || matchedNodes.Count == 0) if (matchedNodes == null || matchedNodes.Count == 0)
{ {
return; return;
} }
foreach (XmlNode matchedNode in matchedNodes) foreach (XmlNode matchedNode in matchedNodes)
{ {
var packageName = matchedNode!.Attributes!["Include"].Value; var packageName = matchedNode!.Attributes!["Include"].Value;
@ -62,7 +63,7 @@ public class LocalReferenceConverter : ITransientDependency
{ {
continue; continue;
} }
var parentNode = matchedNode.ParentNode; var parentNode = matchedNode.ParentNode;
parentNode!.RemoveChild(matchedNode); parentNode!.RemoveChild(matchedNode);
@ -72,10 +73,10 @@ public class LocalReferenceConverter : ITransientDependency
newNode.Attributes.Append(includeAttr); newNode.Attributes.Append(includeAttr);
parentNode.AppendChild(newNode); parentNode.AppendChild(newNode);
} }
File.WriteAllText(targetProject, XDocument.Parse(xmlDocument.OuterXml).ToString()); File.WriteAllText(targetProject, XDocument.Parse(xmlDocument.OuterXml).ToString());
} }
private string CalculateRelativePath(string targetProject, string localProject) private string CalculateRelativePath(string targetProject, string localProject)
{ {
return new Uri(targetProject).MakeRelativeUri(new Uri(localProject)).ToString(); return new Uri(targetProject).MakeRelativeUri(new Uri(localProject)).ToString();
@ -91,8 +92,12 @@ public class LocalReferenceConverter : ITransientDependency
{ {
continue; continue;
} }
list.AddRange(Directory.GetFiles(localPath, "*.csproj", SearchOption.AllDirectories)); var ignoreFolders = new[] { "bin", "obj", ".vs", ".idea", ".vscode", ".git" };
var csprojFiles = Directory.GetFiles(localPath, "*.csproj", SearchOption.AllDirectories)
.Where(x => !ignoreFolders.Any(x.Contains))
.ToList();
list.AddRange(csprojFiles);
} }
return list; return list;

Loading…
Cancel
Save