ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# 调用NuGet 实现获取包的顶级依赖

2022-03-19 14:36:31  阅读:176  来源: 互联网

标签:Console 顶级 C# package NuGet WriteLine using var new


代码:

 1 using System;
 2 using static NuGet.Frameworks.FrameworkConstants;
 3 using static NuGet.Protocol.Core.Types.Repository;
 4 using System.Collections.Generic;
 5 using System.Linq;
 6 using System.Threading;
 7 using System.Threading.Tasks;
 8 using NuGet.Common;
 9 using NuGet.Packaging.Core;
10 using NuGet.Protocol;
11 using NuGet.Protocol.Core.Types;
12 //using NuGet.Test.Utility;
13 using NuGet.Versioning;
14 using NuGet.PackageManagement;
15 namespace NuGet_Remote_develop
16 {
17     internal class Program
18     {
19         static void Main(string[] args)
20         {
21             Console.WriteLine("Hello World!");
22             Console.WriteLine("!!!!");
23             // Set up
24             var packageIdentityA100 = new PackageIdentity("a", NuGetVersion.Parse("1.0.0"));
25             Console.WriteLine("%%%%%");
26             var packageIdentityB100 = new PackageIdentity("b", NuGetVersion.Parse("1.0.0"));
27             var packageIdentityC100 = new PackageIdentity("c", NuGetVersion.Parse("1.0.0"));
28             var packageIdentityC110 = new PackageIdentity("c", NuGetVersion.Parse("1.1.0"));
29             var packageIdentityD100 = new PackageIdentity("d", NuGetVersion.Parse("1.0.0"));
30 
31 
32             var packageDependencyInfos = new List<PackageDependencyInfo>();
33             //制造关于A的依赖图
34             var packageDependencyInfoA = new PackageDependencyInfo(packageIdentityA100,
35                 new PackageDependency[] {
36                     new PackageDependency(packageIdentityB100.Id, VersionRange.Parse(packageIdentityB100.Version.OriginalVersion)),
37                     new PackageDependency(packageIdentityC100.Id, VersionRange.Parse(packageIdentityC100.Version.OriginalVersion)),
38                 });
39             var packageDependencyInfoB = new PackageDependencyInfo(packageIdentityB100,
40                 new PackageDependency[] {
41                     new PackageDependency(packageIdentityD100.Id, VersionRange.Parse(packageIdentityD100.Version.OriginalVersion)),
42                 });
43             var packageDependencyInfoC = new PackageDependencyInfo(packageIdentityC110, Enumerable.Empty<PackageDependency>());
44             var packageDependencyInfoD = new PackageDependencyInfo(packageIdentityD100, Enumerable.Empty<PackageDependency>());
45 
46             //增加所有的依赖关系图
47             packageDependencyInfos.Add(packageDependencyInfoA);
48             packageDependencyInfos.Add(packageDependencyInfoB);
49             packageDependencyInfos.Add(packageDependencyInfoC);
50             packageDependencyInfos.Add(packageDependencyInfoD);
51 
52             // Act————》》获取依赖图
53             var packageWithDependants = PackageGraphAnalysisUtilities.GetPackagesWithDependants(packageDependencyInfos);
54             Console.WriteLine(packageWithDependants);
55             Console.WriteLine("*****");
56             foreach (var package in packageWithDependants)
57             {
58                 switch (package.Identity.Id)
59                 {
60                     case "a":
61                         {
62                             //看他是不是没有其他的依赖项
63                             Console.WriteLine(package.DependantPackages.Count);
64                             Console.WriteLine(package.IsTopLevelPackage);
65                             break;
66                         }
67                     case "b":
68                         {
69                             //看他是不是只有一个依赖项,而且这个依赖项是A。并且他不是直接依赖
70                             Console.WriteLine( package.DependantPackages.Count);
71                             Console.WriteLine(package.DependantPackages.Single().Id);
72                             Console.WriteLine(package.IsTopLevelPackage);
73                             break;
74                         }
75                     case "c":
76                         {
77                             Console.WriteLine(package.DependantPackages.Count);
78                             Console.WriteLine(package.IsTopLevelPackage);
79                             break;
80                         }
81                     case "d":
82                         {
83                             Console.WriteLine( package.DependantPackages.Count);
84                             Console.WriteLine( package.DependantPackages.Single().Id);
85                             Console.WriteLine(package.IsTopLevelPackage);
86                             break;
87                         }
88                     default:
89                         {
90                             Console.WriteLine($"Unexpected package {package.Identity}");
91                             break;
92                         }
93                 }
94             }
95             Console.ReadKey();
96         }
97     }
98 }

 

标签:Console,顶级,C#,package,NuGet,WriteLine,using,var,new
来源: https://www.cnblogs.com/smartisn/p/16026342.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有