diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectReferenceReplaceStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectReferenceReplaceStep.cs index dafdc28dc4..b377a8e053 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectReferenceReplaceStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectReferenceReplaceStep.cs @@ -98,11 +98,12 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps { Check.NotNull(content, nameof(content)); - var doc = new XmlDocument() { PreserveWhitespace = true }; - - doc.Load(StreamHelper.GenerateStreamFromString(content)); - - return ProcessReferenceNodes(doc, content); + using (var stream = StreamHelper.GenerateStreamFromString(content)) + { + var doc = new XmlDocument() { PreserveWhitespace = true }; + doc.Load(stream); + return ProcessReferenceNodes(doc, content); + } } private string ProcessReferenceNodes(XmlDocument doc, string content) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceCommonPropsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceCommonPropsStep.cs index c615bcdfce..89147e8043 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceCommonPropsStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceCommonPropsStep.cs @@ -40,11 +40,12 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps { Check.NotNull(content, nameof(content)); - var doc = new XmlDocument() { PreserveWhitespace = true }; - - doc.Load(StreamHelper.GenerateStreamFromString(content)); - - return ProcessReferenceNodes(doc, content); + using (var stream = StreamHelper.GenerateStreamFromString(content)) + { + var doc = new XmlDocument() { PreserveWhitespace = true }; + doc.Load(stream); + return ProcessReferenceNodes(doc, content); + } } private string ProcessReferenceNodes(XmlDocument doc, string content) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceConfigureAwaitPropsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceConfigureAwaitPropsStep.cs index 1541284009..8801bf3c3c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceConfigureAwaitPropsStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceConfigureAwaitPropsStep.cs @@ -40,11 +40,12 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps { Check.NotNull(content, nameof(content)); - var doc = new XmlDocument() { PreserveWhitespace = true }; - - doc.Load(StreamHelper.GenerateStreamFromString(content)); - - return ProcessReferenceNodes(doc, content); + using (var stream = StreamHelper.GenerateStreamFromString(content)) + { + var doc = new XmlDocument() { PreserveWhitespace = true }; + doc.Load(stream); + return ProcessReferenceNodes(doc, content); + } } private string ProcessReferenceNodes(XmlDocument doc, string content) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NugetPackageToLocalReferenceConverter.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NugetPackageToLocalReferenceConverter.cs index efecee8d79..d505453d59 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NugetPackageToLocalReferenceConverter.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NugetPackageToLocalReferenceConverter.cs @@ -31,13 +31,13 @@ namespace Volo.Abp.Cli.ProjectModification foreach (var projectFile in projectFiles) { var content = File.ReadAllText(projectFile); - var doc = new XmlDocument() { PreserveWhitespace = true }; - - doc.Load(StreamHelper.GenerateStreamFromString(content)); - - var convertedProject = ProcessReferenceNodes(folder, doc, nugetPackageList, localPathPrefix, sourceFile, modulePrefix); - - File.WriteAllText(projectFile, convertedProject); + using (var stream = StreamHelper.GenerateStreamFromString(content)) + { + var doc = new XmlDocument() { PreserveWhitespace = true }; + doc.Load(stream); + var convertedProject = ProcessReferenceNodes(folder, doc, nugetPackageList, localPathPrefix, sourceFile, modulePrefix); + File.WriteAllText(projectFile, convertedProject); + } } } 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..2b4cf7a9cf 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 @@ -140,37 +140,38 @@ namespace Volo.Abp.Cli.ProjectModification return projectFile; } - protected virtual async Task ConvertPackageReferenceToProjectReference(string projectFile,string solutionFile, NugetPackageInfo package) + protected virtual async Task ConvertPackageReferenceToProjectReference(string projectFile, string solutionFile, NugetPackageInfo package) { var content = File.ReadAllText(projectFile); - var doc = new XmlDocument() {PreserveWhitespace = true}; + var doc = new XmlDocument() { PreserveWhitespace = true }; - doc.Load(StreamHelper.GenerateStreamFromString(content)); - - var nodes = doc.SelectNodes( - $"/Project/ItemGroup/PackageReference[starts-with(@Include, '{package.Name}')]"); - - if (nodes == null || nodes.Count < 1) + using (var stream = StreamHelper.GenerateStreamFromString(content)) { - return; - } + doc.Load(stream); + var nodes = doc.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{package.Name}')]"); + if (nodes == null || nodes.Count < 1) + { + return; + } - var downloadedProjectPath = FindRelativeFolderToDownloadPackage(projectFile, solutionFile, package); - var oldNodeIncludeValue = nodes[0]?.Attributes?["Include"]?.Value; + var downloadedProjectPath = FindRelativeFolderToDownloadPackage(projectFile, solutionFile, package); + var oldNodeIncludeValue = nodes[0]?.Attributes?["Include"]?.Value; - if (package.Name == oldNodeIncludeValue) - { - var referenceProjectPath = $"{downloadedProjectPath}\\{package.Name}.csproj"; + if (package.Name == oldNodeIncludeValue) + { + var referenceProjectPath = $"{downloadedProjectPath}\\{package.Name}.csproj"; - var newNode = doc.CreateElement("ProjectReference"); - var includeAttr = doc.CreateAttribute("Include"); - includeAttr.Value = referenceProjectPath; - newNode.Attributes.Append(includeAttr); + var newNode = doc.CreateElement("ProjectReference"); + var includeAttr = doc.CreateAttribute("Include"); + includeAttr.Value = referenceProjectPath; + newNode.Attributes.Append(includeAttr); - nodes[0]?.ParentNode?.ReplaceChild(newNode, nodes[0]); - } + nodes[0]?.ParentNode?.ReplaceChild(newNode, nodes[0]); + } - File.WriteAllText(projectFile, doc.OuterXml); + File.WriteAllText(projectFile, doc.OuterXml); + await Task.CompletedTask; + } } protected virtual async Task AddSourceCode(string projectFile, string solutionFile, NugetPackageInfo package, string version = null) @@ -192,7 +193,7 @@ namespace Volo.Abp.Cli.ProjectModification protected virtual string FindRelativeFolderToDownloadPackage(string projectFile, string solutionFile, NugetPackageInfo package) { - var folder = Path.Combine(Path.GetDirectoryName(solutionFile), "packages", package.Name); + var folder = Path.Combine(Path.GetDirectoryName(solutionFile), "packages", package.Name); return new Uri(projectFile).MakeRelativeUri(new Uri(folder)).ToString().Replace("/", "\\"); } @@ -307,56 +308,52 @@ namespace Volo.Abp.Cli.ProjectModification protected virtual Task AddToCsprojManuallyAsync(string projectFile, NugetPackageInfo package, string version = null) { var projectFileContent = File.ReadAllText(projectFile); - var doc = new XmlDocument() {PreserveWhitespace = true}; - doc.Load(StreamHelper.GenerateStreamFromString(projectFileContent)); - - var itemGroupNodes = doc.SelectNodes("/Project/ItemGroup"); - XmlNode itemGroupNode = null; - - if (itemGroupNodes == null || itemGroupNodes.Count < 1) + var doc = new XmlDocument() { PreserveWhitespace = true }; + using (var stream = StreamHelper.GenerateStreamFromString(projectFileContent)) { - var projectNodes = doc.SelectNodes("/Project"); - var projectNode = projectNodes[0]; + doc.Load(stream); - itemGroupNode = doc.CreateElement("ItemGroup"); - projectNode.AppendChild(itemGroupNode); - } - else - { - itemGroupNode = itemGroupNodes[0]; - } + var itemGroupNodes = doc.SelectNodes("/Project/ItemGroup"); + XmlNode itemGroupNode = null; - var packageReferenceNode = doc.CreateElement("PackageReference"); + if (itemGroupNodes == null || itemGroupNodes.Count < 1) + { + var projectNodes = doc.SelectNodes("/Project"); + var projectNode = projectNodes[0]; - var includeAttr = doc.CreateAttribute("Include"); - includeAttr.Value = package.Name; - packageReferenceNode.Attributes.Append(includeAttr); + itemGroupNode = doc.CreateElement("ItemGroup"); + projectNode.AppendChild(itemGroupNode); + } + else + { + itemGroupNode = itemGroupNodes[0]; + } - if (version != null) - { - var versionAttr = doc.CreateAttribute("Version"); - versionAttr.Value = version; - packageReferenceNode.Attributes.Append(versionAttr); - } + var packageReferenceNode = doc.CreateElement("PackageReference"); - itemGroupNode.AppendChild(packageReferenceNode); + var includeAttr = doc.CreateAttribute("Include"); + includeAttr.Value = package.Name; + packageReferenceNode.Attributes.Append(includeAttr); - File.WriteAllText(projectFile, doc.OuterXml); + if (version != null) + { + var versionAttr = doc.CreateAttribute("Version"); + versionAttr.Value = version; + packageReferenceNode.Attributes.Append(versionAttr); + } - return Task.CompletedTask; + itemGroupNode.AppendChild(packageReferenceNode); + File.WriteAllText(projectFile, doc.OuterXml); + return Task.CompletedTask; + } } protected virtual string GetAbpVersionOrNull(string projectFile) { var projectFileContent = File.ReadAllText(projectFile); - - var doc = new XmlDocument() {PreserveWhitespace = true}; - - doc.Load(StreamHelper.GenerateStreamFromString(projectFileContent)); - - var nodes = doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.')]"); - - return nodes?[0]?.Attributes?["Version"]?.Value; + return SolutionAbpVersionFinder.TryParseVersionFromCsprojFile(projectFileContent, out var version) + ? version + : null; } protected virtual async Task FindNugetPackageInfoAsync(string packageName)