static void InlineAssertInvariants(CSVersion v) { #if DEBUG if (!_alreadyInCheck && v.IsValid) { _alreadyInCheck = true; try { if (v.IsLongForm) { Debug.Assert(v.NormalizedText == ComputeLongFormVersion(v.Major, v.Minor, v.Patch, v.PrereleaseNameIdx, v.PrereleaseNumber, v.PrereleasePatch, v.BuildMetaData)); } else { Debug.Assert(v.NormalizedText == ComputeShortFormVersion(v.Major, v.Minor, v.Patch, v.PrereleaseNameIdx, v.PrereleaseNumber, v.PrereleasePatch, v.BuildMetaData)); } //// Systematically checks that a valid CSVersion can be parsed back in Long or Short form. Debug.Assert(SVersion.TryParse(v.ToString(CSVersionFormat.Normalized)).Equals(v.ToNormalizedForm())); Debug.Assert(SVersion.TryParse(v.ToString(CSVersionFormat.LongForm)).Equals(v.ToLongForm())); } finally { _alreadyInCheck = false; } } #endif }
/// <summary> /// Manages to return the normalized form of this version, whatever it is: /// first, on error, returns the <see cref="ErrorMessage"/>, then if <see cref="AsCSVersion"/> is not null /// the <see cref="CSVersion.ToString(CSVersionFormat, CIBuildDescriptor)"/> with <see cref="CSVersionFormat.Normalized"/> format /// or fallbacks to the <see cref="NormalizedText"/>. /// </summary> /// <returns>The normalized version string (always short form).</returns> public string ToNormalizedString() => ErrorMessage ?? _csVersion?.ToString(CSVersionFormat.Normalized) ?? NormalizedText !;
/// <summary> /// Returns the <see cref="ErrorMessage"/> if not null or the <see cref="CSVersion.ToString(CSVersionFormat, CIBuildDescriptor)"/> /// with <see cref="CSVersionFormat.NuGetPackage"/> format if <see cref="AsCSVersion"/> is not null /// or the <see cref="NormalizedText"/>. /// </summary> /// <returns>The version to use for NuGet package.</returns> public string ToNuGetPackageString() => ErrorMessage ?? _csVersion?.ToString(CSVersionFormat.NuGetPackage) ?? NormalizedText;