コード例 #1
0
 /// <summary>
 /// Full constructor. Used by <see cref="TryParse(string, bool)"/> and methods like <see cref="GetDirectSuccessors(bool, ReleaseTagVersion)"/>.
 /// </summary>
 /// <param name="tag">Original text version. Can be null: the <see cref="ReleaseTagFormat.Normalized"/> is automatically used to compute <see cref="OriginalTagText"/>.</param>
 /// <param name="major">Major (between 0 and 99999).</param>
 /// <param name="minor">Minor (between 0 and 99999).</param>
 /// <param name="patch">Patch (between 0 and 9999).</param>
 /// <param name="preReleaseName">Not null (empty for release). Can be any string [a-z]*.</param>
 /// <param name="preReleaseNameIdx">The index in StandardPreReleaseNames.</param>
 /// <param name="preReleaseNumber">Number between 0 (for release or first prerelease) and 99.</param>
 /// <param name="preReleaseFix">Number between 0 (not a fix, first actual fix starts at 1) and 99.</param>
 /// <param name="kind">One of the <see cref="ReleaseTagKind"/> value. Must be coherent with the other parameters.</param>
 ReleaseTagVersion(string tag, int major, int minor, int patch, string preReleaseName, int preReleaseNameIdx, int preReleaseNumber, int preReleaseFix, ReleaseTagKind kind)
 {
     Debug.Assert(_standardNames.Length == MaxPreReleaseNameIdx + 1);
     Debug.Assert(major >= 0 && major <= MaxMajor);
     Debug.Assert(minor >= 0 && minor <= MaxMinor);
     Debug.Assert(patch >= 0 && patch <= MaxPatch);
     Debug.Assert(preReleaseName != null);
     Debug.Assert(Regex.IsMatch(preReleaseName, "[a-z]*", RegexOptions.CultureInvariant));
     Debug.Assert(preReleaseNameIdx >= -1);
     Debug.Assert((preReleaseName.Length == 0 && preReleaseNameIdx == -1)
                  ||
                  (preReleaseName.Length > 0 && preReleaseNameIdx >= 0 && preReleaseNameIdx <= MaxPreReleaseNameIdx));
     Debug.Assert(preReleaseNumber >= 0 && preReleaseNumber <= MaxPreReleaseNumber);
     Debug.Assert(PreReleasePatch >= 0 && PreReleasePatch <= MaxPreReleaseNumber);
     Debug.Assert(kind != ReleaseTagKind.Malformed);
     Major = major;
     Minor = minor;
     Patch = patch;
     PreReleaseNameFromTag = preReleaseName;
     PreReleaseNameIdx     = preReleaseNameIdx;
     PreReleaseNumber      = preReleaseNumber;
     PreReleasePatch       = preReleaseFix;
     Kind            = kind;
     Marker          = kind.ToStringMarker();
     OriginalTagText = tag ?? ToString();
     //
     Debug.Assert(((Kind & ReleaseTagKind.PreRelease) != 0) == IsPreRelease);
     _orderedVersion = new SOrderedVersion()
     {
         Number = ComputeOrderedVersion(major, minor, patch, preReleaseNameIdx, preReleaseNumber, preReleaseFix)
     };
     DefinitionStrength = ComputeDefinitionStrength();
 }
コード例 #2
0
        /// <summary>
        /// Gets this version in a <see cref="CSVersionFormat.FileVersion"/> format.
        /// </summary>
        /// <param name="isCIBuild">True to indicate a CI build: the revision part (last part) is odd.</param>
        /// <returns>The Major.Minor.Build.Revision number where each part are between 0 and 65535.</returns>
        public string ToStringFileVersion(bool isCIBuild)
        {
            SOrderedVersion v = _orderedVersion;

            v.Number <<= 1;
            if (isCIBuild)
            {
                v.Revision |= 1;
            }
            return(string.Format(CultureInfo.InvariantCulture, "{0}.{1}.{2}.{3}", v.Major, v.Minor, v.Build, v.Revision));
        }
コード例 #3
0
 CSVersion(string parsedText, int major, int minor, int patch, string prerelease, string buildMetaData,
           int preReleaseNameIdx, int preReleaseNumber, int preReleasePatch)
     : base(parsedText, major, minor, patch, prerelease, buildMetaData, null)
 {
     PrereleaseNameIdx = preReleaseNameIdx;
     PrereleaseNumber  = preReleaseNumber;
     PrereleasePatch   = preReleasePatch;
     _orderedVersion   = new SOrderedVersion()
     {
         Number = ComputeOrderedVersion(major, minor, patch, preReleaseNameIdx, preReleaseNumber, preReleasePatch)
     };
     InlineAssertInvariants(this);
 }
コード例 #4
0
 CSVersion(int major, int minor, int patch, string buildMetaData,
           int preReleaseNameIdx, int preReleaseNumber, int preReleasePatch,
           long number = 0)
     : base(null, major, minor, patch, ComputeStandardPreRelease(preReleaseNameIdx, preReleaseNumber, preReleasePatch), buildMetaData, null)
 {
     PrereleaseNameIdx = preReleaseNameIdx;
     PrereleaseNumber  = preReleaseNumber;
     PrereleasePatch   = preReleasePatch;
     _orderedVersion   = new SOrderedVersion()
     {
         Number = number != 0 ? number : ComputeOrderedVersion(major, minor, patch, preReleaseNameIdx, preReleaseNumber, preReleasePatch)
     };
     InlineAssertInvariants(this);
 }