From 0851e02a39f6a70ff813d13157530a49c72c79b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 9 Aug 2021 13:32:58 +0100 Subject: [PATCH 1/2] Fix referencing stable/preview NuGets for .NET nanoFramework - Implement code to figure out if the the latest mscorlib version is preview or stable and use the appropriate version. (previously it was referencing only preview versions) --- CodeGen/Generators/NanoFrameworkGenerator.cs | 49 ++++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/CodeGen/Generators/NanoFrameworkGenerator.cs b/CodeGen/Generators/NanoFrameworkGenerator.cs index 78c2ccd92c..31426fced9 100644 --- a/CodeGen/Generators/NanoFrameworkGenerator.cs +++ b/CodeGen/Generators/NanoFrameworkGenerator.cs @@ -140,14 +140,26 @@ private static void SetDependencyVersions(FindPackageByIdResource resource, Sour logger, cancellationToken).Result; - // NuGet package Version - // including preview - var mscorlibPackage = packageVersions.Where(v => v.IsPrerelease).OrderByDescending(v => v).First(); - // stable only - //var mscorlibPackage = packageVersions.OrderByDescending(v => v).First(); + // get NuGet package Version for mscorlib + var latestStableVersion = packageVersions.OrderByDescending(v => v).First(); + var latestPreviewVersion = packageVersions.Where(v => v.IsPrerelease).OrderByDescending(v => v).First(); + NuGetVersion mscorlibVersion; - MscorlibVersion = mscorlibPackage.Version.ToString(); - MscorlibNuGetVersion = mscorlibPackage.ToNormalizedString(); + // check which version is greatest + if (latestStableVersion > latestPreviewVersion) + { + // newest is stable + MscorlibVersion = latestStableVersion.Version.ToString(); + MscorlibNuGetVersion = latestStableVersion.ToNormalizedString(); + mscorlibVersion = latestStableVersion; + } + else + { + // newest is preview + MscorlibVersion = latestPreviewVersion.Version.ToString(); + MscorlibNuGetVersion = latestPreviewVersion.ToNormalizedString(); + mscorlibVersion = latestPreviewVersion; + } // Math packageVersions = resource.GetAllVersionsAsync( @@ -156,14 +168,23 @@ private static void SetDependencyVersions(FindPackageByIdResource resource, Sour logger, cancellationToken).Result; - // NuGet package Version - // including preview - var mathPackage = packageVersions.Where(v => v.IsPrerelease).OrderByDescending(v => v).First(); - // stable only - //var mathPackage = MathNuGetVersion = packageVersions.OrderByDescending(v => v).First(); + if(mscorlibVersion.IsPrerelease) + { + // we are working with a preview version + var mathPackage = packageVersions.Where(v => v.IsPrerelease).OrderByDescending(v => v).First(); + MathVersion = mathPackage.Version.ToString(); + MathNuGetVersion = mathPackage.ToNormalizedString(); + } + else + { + // we are working with a stable version + var mathPackage = packageVersions.OrderByDescending(v => v).First(); + MathVersion = mathPackage.Version.ToString(); + MathNuGetVersion = mathPackage.ToNormalizedString(); + } - MathVersion = mathPackage.Version.ToString(); - MathNuGetVersion = mathPackage.ToNormalizedString(); + logger.LogInformation($"Referencing nanoFramework.CoreLibrary {MscorlibNuGetVersion}"); + logger.LogInformation($"Referencing nanoFramework.System.Math {MathNuGetVersion}"); } else { From 5f7cec942776e79153fb083f7c554c264c7f3c8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 12 Aug 2021 07:48:50 +0100 Subject: [PATCH 2/2] Rework code to remove checks for stable/preview versions --- CodeGen/Generators/NanoFrameworkGenerator.cs | 44 +++++--------------- 1 file changed, 10 insertions(+), 34 deletions(-) diff --git a/CodeGen/Generators/NanoFrameworkGenerator.cs b/CodeGen/Generators/NanoFrameworkGenerator.cs index 31426fced9..211cd02806 100644 --- a/CodeGen/Generators/NanoFrameworkGenerator.cs +++ b/CodeGen/Generators/NanoFrameworkGenerator.cs @@ -141,47 +141,23 @@ private static void SetDependencyVersions(FindPackageByIdResource resource, Sour cancellationToken).Result; // get NuGet package Version for mscorlib - var latestStableVersion = packageVersions.OrderByDescending(v => v).First(); - var latestPreviewVersion = packageVersions.Where(v => v.IsPrerelease).OrderByDescending(v => v).First(); - NuGetVersion mscorlibVersion; + // grab latest available (doesn't matter if it's preview or stable) + NuGetVersion mscorlibVersion = packageVersions.OrderByDescending(v => v).First(); + MscorlibVersion = mscorlibVersion.Version.ToString(); + MscorlibNuGetVersion = mscorlibVersion.ToNormalizedString(); - // check which version is greatest - if (latestStableVersion > latestPreviewVersion) - { - // newest is stable - MscorlibVersion = latestStableVersion.Version.ToString(); - MscorlibNuGetVersion = latestStableVersion.ToNormalizedString(); - mscorlibVersion = latestStableVersion; - } - else - { - // newest is preview - MscorlibVersion = latestPreviewVersion.Version.ToString(); - MscorlibNuGetVersion = latestPreviewVersion.ToNormalizedString(); - mscorlibVersion = latestPreviewVersion; - } - - // Math + // System.Math packageVersions = resource.GetAllVersionsAsync( "nanoFramework.System.Math", cache, logger, cancellationToken).Result; - if(mscorlibVersion.IsPrerelease) - { - // we are working with a preview version - var mathPackage = packageVersions.Where(v => v.IsPrerelease).OrderByDescending(v => v).First(); - MathVersion = mathPackage.Version.ToString(); - MathNuGetVersion = mathPackage.ToNormalizedString(); - } - else - { - // we are working with a stable version - var mathPackage = packageVersions.OrderByDescending(v => v).First(); - MathVersion = mathPackage.Version.ToString(); - MathNuGetVersion = mathPackage.ToNormalizedString(); - } + // grab latest available (doesn't matter if it's preview or stable) + // making an assumption here that the available version is referencing the correct mscolib + var mathVersion = packageVersions.OrderByDescending(v => v).First(); + MathVersion = mathVersion.Version.ToString(); + MathNuGetVersion = mathVersion.ToNormalizedString(); logger.LogInformation($"Referencing nanoFramework.CoreLibrary {MscorlibNuGetVersion}"); logger.LogInformation($"Referencing nanoFramework.System.Math {MathNuGetVersion}");