From 14c38019a29d6a03255e49c5fc559971af1e8ea0 Mon Sep 17 00:00:00 2001 From: Vladimir Litvinchik Date: Tue, 7 May 2024 16:04:38 +0300 Subject: [PATCH] Add app to print supported frameworks --- .gitignore | 4 +- .../PrintSupportedFrameworks.csproj | 14 +++++ .../PrintSupportedFrameworks.sln | 25 ++++++++ tools/PrintSupportedFrameworks/Program.cs | 60 +++++++++++++++++++ 4 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 tools/PrintSupportedFrameworks/PrintSupportedFrameworks.csproj create mode 100644 tools/PrintSupportedFrameworks/PrintSupportedFrameworks.sln create mode 100644 tools/PrintSupportedFrameworks/Program.cs diff --git a/.gitignore b/.gitignore index 3584f85..3f981ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ deploy_key -common/ \ No newline at end of file +common/ +bin/ +obj/ \ No newline at end of file diff --git a/tools/PrintSupportedFrameworks/PrintSupportedFrameworks.csproj b/tools/PrintSupportedFrameworks/PrintSupportedFrameworks.csproj new file mode 100644 index 0000000..dde1549 --- /dev/null +++ b/tools/PrintSupportedFrameworks/PrintSupportedFrameworks.csproj @@ -0,0 +1,14 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + diff --git a/tools/PrintSupportedFrameworks/PrintSupportedFrameworks.sln b/tools/PrintSupportedFrameworks/PrintSupportedFrameworks.sln new file mode 100644 index 0000000..a954d53 --- /dev/null +++ b/tools/PrintSupportedFrameworks/PrintSupportedFrameworks.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PrintSupportedFrameworks", "PrintSupportedFrameworks.csproj", "{0A236E75-BDE9-4A8F-9A1A-C12531524B41}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0A236E75-BDE9-4A8F-9A1A-C12531524B41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A236E75-BDE9-4A8F-9A1A-C12531524B41}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A236E75-BDE9-4A8F-9A1A-C12531524B41}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A236E75-BDE9-4A8F-9A1A-C12531524B41}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {DD42DDA9-CCB7-4CCF-80B5-207B1A7EDD58} + EndGlobalSection +EndGlobal diff --git a/tools/PrintSupportedFrameworks/Program.cs b/tools/PrintSupportedFrameworks/Program.cs new file mode 100644 index 0000000..dc8b7d3 --- /dev/null +++ b/tools/PrintSupportedFrameworks/Program.cs @@ -0,0 +1,60 @@ +using System.Text; +using NuGet.Common; +using NuGet.Protocol; +using NuGet.Protocol.Core.Types; + +//string packageName = "GroupDocs.Viewer"; +string packageName = "GroupDocs.Viewer.CrossPlatform"; + +ILogger logger = NullLogger.Instance; +CancellationToken cancellationToken = CancellationToken.None; + +SourceCacheContext cache = new SourceCacheContext(); +SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json"); +PackageMetadataResource resource = await repository.GetResourceAsync(); + +IEnumerable packages = await resource.GetMetadataAsync( + packageName, + includePrerelease: false, + includeUnlisted: false, + cache, + logger, + cancellationToken); + +StringBuilder mdTable = new StringBuilder(); +mdTable.AppendLine("| Package version | Target frameworks |"); +mdTable.AppendLine("| --- | --- |"); + +foreach (IPackageSearchMetadata package in packages.OrderByDescending(p => p.Published)) +{ + //Console.WriteLine($"Version: {package.Identity.Version}"); + //Console.WriteLine($"Description: {package.Published}"); + //Console.WriteLine("Dependencies:"); + //foreach (var dependencyGroup in package.DependencySets) + //{ + // Console.WriteLine($" {dependencyGroup.TargetFramework.GetShortFolderName()}"); + //} + + var frameworks = package + .DependencySets + .Select(d => d.TargetFramework.GetShortFolderName()) + .Select(d => d + .Replace("net20", ".NET Framework 2.0") + .Replace("net40", ".NET Framework 4.0") + .Replace("net462", ".NET Frameword 4.6.2") + .Replace("net6.0", ".NET 6.0") + .Replace("netstandard2.0", ".NET Standard 2.0") + .Replace("netstandard2.1", ".NET Standard 2.1") + ); + + string frameworksJoined = string.Join(", ", frameworks); + if (string.IsNullOrEmpty(frameworksJoined)) + { + frameworksJoined = ".NET Framework 2.0"; + } + + string line = $"| [{package.Identity.Version}](https://www.nuget.org/packages/{packageName}/{package.Identity.Version}) | {frameworksJoined} |"; + mdTable.AppendLine(line); +} + +Console.WriteLine(mdTable.ToString());