public static VersionInfo GetLambdaSharpAssemblyReferenceVersion(VersionInfo version) => version.GetMajorMinorVersion();
        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);
        }