Browse Source

Created CsprojFileManager.GetDependencyListAsync

pull/10363/head
Yunus Emre Kalkan 5 years ago
parent
commit
8dd2ac12aa
  1. 33
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs
  2. 6
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs
  3. 30
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageDependency.cs
  4. 8
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/ReferenceType.cs

33
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs

@ -1,9 +1,11 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using System.Xml;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.Helpers;
using Volo.Abp.Studio.Package;
using Volo.Abp.Studio.Xml;
namespace Volo.Abp.Studio.Packages.Modifying
@ -132,6 +134,37 @@ namespace Volo.Abp.Studio.Packages.Modifying
return nodes[0].InnerText.Trim();
}
public async Task<List<PackageDependency>> GetDependencyListAsync(string filePath)
{
var result = new List<PackageDependency>();
var document = await GetXmlDocumentAsync(filePath);
var packageReferenceNodes = document.SelectNodes($"/Project/ItemGroup/PackageReference");
var projectReferenceNodes = document.SelectNodes($"/Project/ItemGroup/ProjectReference");
foreach (XmlNode packageReferenceNode in packageReferenceNodes)
{
result.Add(
new PackageDependency(
packageReferenceNode.Attributes["Include"].Value,
packageReferenceNode.Attributes["Version"].Value
)
);
}
foreach (XmlNode projectReferenceNode in projectReferenceNodes)
{
result.Add(
new PackageDependency(
Path.GetFullPath(Path.Combine(Path.GetDirectoryName(filePath), projectReferenceNode.Attributes["Include"].Value))
)
);
}
return result;
}
private XmlNode GetOrCreateItemGroupNode(XmlDocument document)
{
var nodes = document["Project"].SelectNodes("ItemGroup");

6
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs

@ -1,4 +1,6 @@
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Studio.Package;
namespace Volo.Abp.Studio.Packages.Modifying
{
@ -11,5 +13,7 @@ namespace Volo.Abp.Studio.Packages.Modifying
Task ConvertPackageReferenceToProjectReferenceAsync(string filePath, string projectToReference);
Task<string> GetTargetFrameworkAsync(string filePath);
Task<List<PackageDependency>> GetDependencyListAsync(string filePath);
}
}

30
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageDependency.cs

@ -0,0 +1,30 @@
using System;
using System.IO;
namespace Volo.Abp.Studio.Package
{
public class PackageDependency
{
public ReferenceType Type { get; }
public string Name { get; }
public string Version { get; }
public string Path { get; }
public PackageDependency(string name, string version)
{
Type = ReferenceType.Package;
Name = name;
Version = version;
}
public PackageDependency(string path)
{
Type = ReferenceType.Project;
Path = path;
Name = System.IO.Path.GetFileName(path).RemovePostFix(".csproj");
}
}
}

8
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/ReferenceType.cs

@ -0,0 +1,8 @@
namespace Volo.Abp.Studio.Package
{
public enum ReferenceType
{
Project = 1,
Package = 2
}
}
Loading…
Cancel
Save