/// <summary>
    /// Creates a new implementation version from a a string.
    /// </summary>
    /// <param name="value">The string containing the version information.</param>
    /// <exception cref="FormatException"><paramref name="value"/> is not a valid version string.</exception>
    public ImplementationVersion(string value)
    {
        if (string.IsNullOrEmpty(value))
        {
            throw new FormatException(Resources.MustStartWithDottedList);
        }

        if (ModelUtils.ContainsTemplateVariables(value))
        {
            _verbatimString = value;
            return;
        }

        var parts = value.Split('-');

        // Ensure the first part is a dotted list
        if (!VersionDottedList.IsValid(parts[0]))
        {
            throw new FormatException(Resources.MustStartWithDottedList);
        }
        FirstPart = new VersionDottedList(parts[0]);

        // Iterate through all additional parts
        var additionalParts = new VersionPart[parts.Length - 1];

        for (int i = 1; i < parts.Length; i++)
        {
            additionalParts[i - 1] = new VersionPart(parts[i]);
        }
        AdditionalParts = additionalParts;
    }
    /// <summary>
    /// Creates a new implementation version from a .NET <see cref="Version"/>.
    /// </summary>
    /// <param name="version">The .NET <see cref="Version"/> to convert.</param>
    public ImplementationVersion(Version version)
    {
        #region Sanity checks
        if (version == null)
        {
            throw new ArgumentNullException(nameof(version));
        }
        #endregion

        FirstPart = new VersionDottedList(version.ToString());
    }
Example #3
0
 /// <summary>
 /// Creates a new version part.
 /// </summary>
 /// <param name="modifier">The optional modifier prefix.</param>
 /// <param name="dottedList">The dotted list part.</param>
 public VersionPart(VersionModifier modifier = VersionModifier.None, VersionDottedList dottedList = default)
 {
     Modifier   = modifier;
     DottedList = dottedList;
 }
Example #4
0
 /// <summary>
 /// Creates a new implementation version.
 /// </summary>
 /// <param name="firstPart">The first part of the version number.</param>
 /// <param name="additionalParts">All additional parts of the version number.</param>
 public ImplementationVersion(VersionDottedList firstPart, params VersionPart[] additionalParts)
 {
     FirstPart       = firstPart;
     AdditionalParts = additionalParts ?? throw new ArgumentNullException(nameof(additionalParts));
 }