コード例 #1
0
        public static Version ParseVersion(string version, VersionFormatting formatting)
        {
            Version         formattedVersion = new Version();
            MatchCollection matches;

            bool result = false;

            switch (formatting)
            {
            case VersionFormatting.MAJOR_MINOR_REVISION:
                matches = Regex.Matches(version, @"(\d+)\.(\d+)\.(\d+)");

                if (matches.Count == 3)
                {
                    formattedVersion = new Version(Convert.ToInt32(matches[0].Captures[0].Value), Convert.ToInt32(matches[1].Captures[0].Value), 0, Convert.ToInt32(matches[2].Captures[0].Value));
                    result           = true;
                }
                break;

            case VersionFormatting.MAJOR_MINOR_REVISION_BUILD:
                break;

            case VersionFormatting.MAJOR_MINOR_BUILD_REVISION:
                break;
            }

            if (!result)
            {
                throw new ArgumentException(String.Format("\"{0}\" could not be parsed into \"{1}\" format.", version, Enum.GetName(typeof(VersionFormatting), formatting)));
            }

            return(formattedVersion);
        }
コード例 #2
0
        ///<summary>Compares two versions with each other.</summary>
        ///<returns>Returns <c>-1</c> if the <c>primary</c> version is older than the <c>secondary</c> version, <c>0</c> if equal or <c>1</c> if newer.</returns>
        public static short CompareVersions(Version primary, Version secondary, VersionFormatting formatting)
        {
            Version[] versions = new Version[] { primary, secondary };
            int[,] versionNumbers = new int[2, 4];

            switch (formatting)
            {
            case VersionFormatting.MAJOR_MINOR_REVISION_BUILD:
                versionNumbers = new int[2, 4]
                {
                    { primary.Major, primary.Minor, primary.Revision, primary.Build },
                    { secondary.Major, secondary.Minor, secondary.Revision, secondary.Build }
                };
                break;

            case VersionFormatting.MAJOR_MINOR_BUILD_REVISION:
                versionNumbers = new int[2, 4]
                {
                    { primary.Major, primary.Minor, primary.Build, primary.Revision },
                    { secondary.Major, secondary.Minor, secondary.Build, secondary.Revision }
                };
                break;

            case VersionFormatting.MAJOR_MINOR_REVISION:
                versionNumbers = new int[2, 3]
                {
                    { primary.Major, primary.Minor, primary.Revision },
                    { secondary.Major, secondary.Minor, secondary.Revision }
                };
                break;
            }

            // Compare versions
            for (int i = 0; i < versionNumbers.GetLength(1); i++)
            {
                if (versionNumbers[0, i] < versionNumbers[1, i])
                {
                    return(-1);
                }
                else if (versionNumbers[0, i] > versionNumbers[1, i])
                {
                    return(1);
                }
            }

            return(0);
        }
コード例 #3
0
ファイル: UpdateChecker.cs プロジェクト: tomrhollis/vellum
        public static string ParseVersion(Version version, VersionFormatting formatting)
        {
            StringBuilder builder = new StringBuilder();

            switch (formatting)
            {
            case VersionFormatting.MAJOR_MINOR_REVISION:
                builder.Append(String.Format("{0}.{1}.{2}", version.Major, version.Minor, version.Revision));
                break;

            case VersionFormatting.MAJOR_MINOR_REVISION_BUILD:
                builder.Append(String.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Revision, version.Build));
                break;

            case VersionFormatting.MAJOR_MINOR_BUILD_REVISION:
                builder.Append(version.ToString());
                break;
            }

            return(builder.ToString());
        }