diff --git a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/CompatibilityCheckerFacts.cs b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/CompatibilityCheckerFacts.cs index 2316f651fdb0..0bce4760b005 100644 --- a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/CompatibilityCheckerFacts.cs +++ b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/CompatibilityCheckerFacts.cs @@ -7,6 +7,7 @@ namespace NuGetUpdater.Core.Test.FrameworkChecker; public class CompatibilityCheckerFacts { [Theory] + [InlineData("net8.0", "net7.0")] [InlineData("net7.0", "net7.0")] [InlineData("net7.0", "net6.0")] [InlineData("net7.0", "net5.0")] @@ -26,6 +27,7 @@ public void PackageContainsCompatibleFramework(string projectTfm, string package [Theory] [InlineData("net48", "netcoreapp3.1")] [InlineData("net48", "netstandard2.1")] + [InlineData("net7.0", "net8.0")] [InlineData("net6.0", "net7.0")] [InlineData("net5.0", "net6.0")] [InlineData("netcoreapp3.1", "net5.0")] @@ -42,6 +44,7 @@ public void PackageContainsIncompatibleFramework(string projectTfm, string packa [Theory] [InlineData(new[] { "net7.0", "net472" }, new[] { "netstandard2.0" })] [InlineData(new[] { "net7.0", "net472" }, new[] { "net5.0", "net461" })] + [InlineData(new[] { "net6.0", "net6.0-windows10.0.19041" }, new[] { "net6.0", ".NETStandard2.0" })] public void PackageContainsCompatibleFrameworks(string[] projectTfms, string[] packageTfms) { var result = CompatibilityChecker.IsCompatible(projectTfms, packageTfms, new Logger(verbose: true)); diff --git a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/CompatabilityChecker.cs b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/CompatabilityChecker.cs index c2f5dd41c7df..4b4b8e72a6c2 100644 --- a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/CompatabilityChecker.cs +++ b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/CompatabilityChecker.cs @@ -8,8 +8,8 @@ public class CompatibilityChecker { public static bool IsCompatible(string[] projectTfms, string[] packageTfms, Logger logger) { - var projectFrameworks = projectTfms.Select(t => NuGetFramework.Parse(t)); - var packageFrameworks = packageTfms.Select(t => NuGetFramework.Parse(t)); + var projectFrameworks = projectTfms.Select(ParseFramework); + var packageFrameworks = packageTfms.Select(ParseFramework); var compatibilityService = new FrameworkCompatibilityService(); var compatibleFrameworks = compatibilityService.GetCompatibleFrameworks(packageFrameworks); @@ -23,5 +23,17 @@ public static bool IsCompatible(string[] projectTfms, string[] packageTfms, Logg logger.Log("The package is compatible."); return true; + + static NuGetFramework ParseFramework(string tfm) + { + var framework = NuGetFramework.Parse(tfm); + if (framework.HasPlatform && framework.PlatformVersion != FrameworkConstants.EmptyVersion) + { + // Platform versions are not well supported by the FrameworkCompatibilityService. Make a best + // effort by including just the platform. + framework = new NuGetFramework(framework.Framework, framework.Version, framework.Platform, FrameworkConstants.EmptyVersion); + } + return framework; + } } } \ No newline at end of file diff --git a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/SupportedFrameworks.cs b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/SupportedFrameworks.cs index f5493d98a545..a04f09dcd467 100644 --- a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/SupportedFrameworks.cs +++ b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/SupportedFrameworks.cs @@ -23,6 +23,8 @@ namespace NuGetUpdater.Core.FrameworkChecker; /// public static class SupportedFrameworks { + public static readonly Version Version8 = new Version(8, 0, 0, 0); + public static readonly NuGetFramework MonoAndroid = new NuGetFramework(FrameworkIdentifiers.MonoAndroid, EmptyVersion); public static readonly NuGetFramework MonoTouch = new NuGetFramework(FrameworkIdentifiers.MonoTouch, EmptyVersion); public static readonly NuGetFramework MonoMac = new NuGetFramework(FrameworkIdentifiers.MonoMac, EmptyVersion); @@ -44,6 +46,14 @@ public static class SupportedFrameworks public static readonly NuGetFramework Net70Tizen = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version7, "tizen", EmptyVersion); public static readonly NuGetFramework Net70TvOs = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version7, "tvos", EmptyVersion); public static readonly NuGetFramework Net70Windows = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version7, "windows", EmptyVersion); + public static readonly NuGetFramework Net80 = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version8); + public static readonly NuGetFramework Net80Android = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version8, "android", EmptyVersion); + public static readonly NuGetFramework Net80Ios = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version8, "ios", EmptyVersion); + public static readonly NuGetFramework Net80MacOs = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version8, "macos", EmptyVersion); + public static readonly NuGetFramework Net80MacCatalyst = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version8, "maccatalyst", EmptyVersion); + public static readonly NuGetFramework Net80Tizen = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version8, "tizen", EmptyVersion); + public static readonly NuGetFramework Net80TvOs = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version8, "tvos", EmptyVersion); + public static readonly NuGetFramework Net80Windows = new NuGetFramework(FrameworkIdentifiers.NetCoreApp, Version8, "windows", EmptyVersion); public static readonly NuGetFramework NetCore = new NuGetFramework(FrameworkIdentifiers.NetCore, EmptyVersion); public static readonly NuGetFramework NetMf = new NuGetFramework(FrameworkIdentifiers.NetMicro, EmptyVersion); public static readonly NuGetFramework UAP = new NuGetFramework(FrameworkIdentifiers.UAP, EmptyVersion); @@ -68,6 +78,7 @@ static SupportedFrameworks() Net50, Net50Windows, Net60, Net60Android, Net60Ios, Net60MacCatalyst, Net60MacOs, Net60TvOs, Net60Windows, Net70, Net70Android, Net70Ios, Net70MacCatalyst, Net70MacOs, Net70TvOs, Net70Windows, + Net80, Net80Android, Net80Ios, Net80MacCatalyst, Net80MacOs, Net80TvOs, Net80Windows, NetCore, NetCore45, NetCore451, NetCoreApp10, NetCoreApp11, NetCoreApp20, NetCoreApp21, NetCoreApp22, NetCoreApp30, NetCoreApp31, NetMf, @@ -87,6 +98,7 @@ public static class TfmFilters { public static readonly List NetTfms = new List { + Net80, Net70, Net60, Net50