|
|
@ -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) |
|
|
|