public static VersionWithSuffix Parse(string text) { VersionWithSuffix.Parse(text, out var major, out var minor, out var build, out var revision, out var suffix); if (build == -1) { return(new VersionWithSuffix(new Version(major, minor), suffix)); } if (revision == -1) { return(new VersionWithSuffix(new Version(major, minor, build), suffix)); } return(new VersionWithSuffix(new Version(major, minor, build, revision), suffix)); }
public static bool IsValidLambdaSharpAssemblyReferenceForToolVersion(VersionInfo toolVersion, string projectFramework, string lambdaSharpAssemblyVersion, out bool outdated) { // extract assembly version pattern without wildcard VersionWithSuffix libraryVersion; if (lambdaSharpAssemblyVersion.EndsWith(".*", StringComparison.Ordinal)) { libraryVersion = VersionWithSuffix.Parse(lambdaSharpAssemblyVersion.Substring(0, lambdaSharpAssemblyVersion.Length - 2)); } else { libraryVersion = VersionWithSuffix.Parse(lambdaSharpAssemblyVersion); } // compare based on selected framework bool valid; switch (projectFramework) { case "netstandard2.1": // .NET Standard 2.1 projects (Blazor) require 0.8.1.* valid = (libraryVersion.Major == 0) && (libraryVersion.Minor == 8) && (libraryVersion.Build >= 1); outdated = false; break; case "netcoreapp2.1": case "netcoreapp3.1": // .NET Core 2.1/3.1 projects (Lambda) require 0.8.0.* or 0.8.1.* valid = (libraryVersion.Major == 0) && (libraryVersion.Minor == 8) && ( (libraryVersion.Build == 0) || (libraryVersion.Build == 1) ); break; default: throw new VersionInfoCompatibilityUnsupportedFrameworkException(projectFramework); } outdated = valid && VersionInfo.From(libraryVersion, strict: false).IsLessThanVersion(toolVersion.GetMajorMinorVersion()); return(valid); }