Browse Source

Dispose streams. closes #10145

pull/10146/head
Alper Ebicoglu 5 years ago
parent
commit
a56bc4d4c0
  1. 11
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectReferenceReplaceStep.cs
  2. 11
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceCommonPropsStep.cs
  3. 11
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceConfigureAwaitPropsStep.cs
  4. 14
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NugetPackageToLocalReferenceConverter.cs
  5. 117
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs

11
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)); Check.NotNull(content, nameof(content));
var doc = new XmlDocument() { PreserveWhitespace = true }; using (var stream = StreamHelper.GenerateStreamFromString(content))
{
doc.Load(StreamHelper.GenerateStreamFromString(content)); var doc = new XmlDocument() { PreserveWhitespace = true };
doc.Load(stream);
return ProcessReferenceNodes(doc, content); return ProcessReferenceNodes(doc, content);
}
} }
private string ProcessReferenceNodes(XmlDocument doc, string content) private string ProcessReferenceNodes(XmlDocument doc, string content)

11
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)); Check.NotNull(content, nameof(content));
var doc = new XmlDocument() { PreserveWhitespace = true }; using (var stream = StreamHelper.GenerateStreamFromString(content))
{
doc.Load(StreamHelper.GenerateStreamFromString(content)); var doc = new XmlDocument() { PreserveWhitespace = true };
doc.Load(stream);
return ProcessReferenceNodes(doc, content); return ProcessReferenceNodes(doc, content);
}
} }
private string ProcessReferenceNodes(XmlDocument doc, string content) private string ProcessReferenceNodes(XmlDocument doc, string content)

11
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)); Check.NotNull(content, nameof(content));
var doc = new XmlDocument() { PreserveWhitespace = true }; using (var stream = StreamHelper.GenerateStreamFromString(content))
{
doc.Load(StreamHelper.GenerateStreamFromString(content)); var doc = new XmlDocument() { PreserveWhitespace = true };
doc.Load(stream);
return ProcessReferenceNodes(doc, content); return ProcessReferenceNodes(doc, content);
}
} }
private string ProcessReferenceNodes(XmlDocument doc, string content) private string ProcessReferenceNodes(XmlDocument doc, string content)

14
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) foreach (var projectFile in projectFiles)
{ {
var content = File.ReadAllText(projectFile); var content = File.ReadAllText(projectFile);
var doc = new XmlDocument() { PreserveWhitespace = true }; using (var stream = StreamHelper.GenerateStreamFromString(content))
{
doc.Load(StreamHelper.GenerateStreamFromString(content)); var doc = new XmlDocument() { PreserveWhitespace = true };
doc.Load(stream);
var convertedProject = ProcessReferenceNodes(folder, doc, nugetPackageList, localPathPrefix, sourceFile, modulePrefix); var convertedProject = ProcessReferenceNodes(folder, doc, nugetPackageList, localPathPrefix, sourceFile, modulePrefix);
File.WriteAllText(projectFile, convertedProject);
File.WriteAllText(projectFile, convertedProject); }
} }
} }

117
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs

@ -140,37 +140,38 @@ namespace Volo.Abp.Cli.ProjectModification
return projectFile; 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 content = File.ReadAllText(projectFile);
var doc = new XmlDocument() {PreserveWhitespace = true}; var doc = new XmlDocument() { PreserveWhitespace = true };
doc.Load(StreamHelper.GenerateStreamFromString(content)); using (var stream = StreamHelper.GenerateStreamFromString(content))
var nodes = doc.SelectNodes(
$"/Project/ItemGroup/PackageReference[starts-with(@Include, '{package.Name}')]");
if (nodes == null || nodes.Count < 1)
{ {
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 downloadedProjectPath = FindRelativeFolderToDownloadPackage(projectFile, solutionFile, package);
var oldNodeIncludeValue = nodes[0]?.Attributes?["Include"]?.Value; var oldNodeIncludeValue = nodes[0]?.Attributes?["Include"]?.Value;
if (package.Name == oldNodeIncludeValue) if (package.Name == oldNodeIncludeValue)
{ {
var referenceProjectPath = $"{downloadedProjectPath}\\{package.Name}.csproj"; var referenceProjectPath = $"{downloadedProjectPath}\\{package.Name}.csproj";
var newNode = doc.CreateElement("ProjectReference"); var newNode = doc.CreateElement("ProjectReference");
var includeAttr = doc.CreateAttribute("Include"); var includeAttr = doc.CreateAttribute("Include");
includeAttr.Value = referenceProjectPath; includeAttr.Value = referenceProjectPath;
newNode.Attributes.Append(includeAttr); 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) 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) 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("/", "\\"); 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) protected virtual Task AddToCsprojManuallyAsync(string projectFile, NugetPackageInfo package, string version = null)
{ {
var projectFileContent = File.ReadAllText(projectFile); var projectFileContent = File.ReadAllText(projectFile);
var doc = new XmlDocument() {PreserveWhitespace = true}; var doc = new XmlDocument() { PreserveWhitespace = true };
doc.Load(StreamHelper.GenerateStreamFromString(projectFileContent)); using (var stream = StreamHelper.GenerateStreamFromString(projectFileContent))
var itemGroupNodes = doc.SelectNodes("/Project/ItemGroup");
XmlNode itemGroupNode = null;
if (itemGroupNodes == null || itemGroupNodes.Count < 1)
{ {
var projectNodes = doc.SelectNodes("/Project"); doc.Load(stream);
var projectNode = projectNodes[0];
itemGroupNode = doc.CreateElement("ItemGroup"); var itemGroupNodes = doc.SelectNodes("/Project/ItemGroup");
projectNode.AppendChild(itemGroupNode); XmlNode itemGroupNode = null;
}
else
{
itemGroupNode = itemGroupNodes[0];
}
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"); itemGroupNode = doc.CreateElement("ItemGroup");
includeAttr.Value = package.Name; projectNode.AppendChild(itemGroupNode);
packageReferenceNode.Attributes.Append(includeAttr); }
else
{
itemGroupNode = itemGroupNodes[0];
}
if (version != null) var packageReferenceNode = doc.CreateElement("PackageReference");
{
var versionAttr = doc.CreateAttribute("Version");
versionAttr.Value = version;
packageReferenceNode.Attributes.Append(versionAttr);
}
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) protected virtual string GetAbpVersionOrNull(string projectFile)
{ {
var projectFileContent = File.ReadAllText(projectFile); var projectFileContent = File.ReadAllText(projectFile);
return SolutionAbpVersionFinder.TryParseVersionFromCsprojFile(projectFileContent, out var version)
var doc = new XmlDocument() {PreserveWhitespace = true}; ? version
: null;
doc.Load(StreamHelper.GenerateStreamFromString(projectFileContent));
var nodes = doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.')]");
return nodes?[0]?.Attributes?["Version"]?.Value;
} }
protected virtual async Task<NugetPackageInfo> FindNugetPackageInfoAsync(string packageName) protected virtual async Task<NugetPackageInfo> FindNugetPackageInfoAsync(string packageName)

Loading…
Cancel
Save