public static Dictionary <string, string> GetVariablesFor(SemanticVersion semanticVersion, Config configuration) { var bmd = semanticVersion.BuildMetaData; var formatter = bmd.Branch == "develop" ? new CiFeedFormatter() : null; var variables = new Dictionary <string, string>(StringComparer.InvariantCultureIgnoreCase) { { Major, semanticVersion.Major.ToString() }, { Minor, semanticVersion.Minor.ToString() }, { Patch, semanticVersion.Patch.ToString() }, { PreReleaseTag, semanticVersion.PreReleaseTag }, { PreReleaseTagWithDash, semanticVersion.PreReleaseTag.HasTag() ? "-" + semanticVersion.PreReleaseTag : null }, { BuildMetaData, bmd }, { FullBuildMetaData, bmd.ToString("f") }, { MajorMinorPatch, string.Format("{0}.{1}.{2}", semanticVersion.Major, semanticVersion.Minor, semanticVersion.Patch) }, { SemVer, semanticVersion.ToString(null, formatter) }, { LegacySemVer, semanticVersion.ToString("l", formatter) }, { LegacySemVerPadded, semanticVersion.ToString("lp", formatter) }, { AssemblySemVer, semanticVersion.GetAssemblyVersion(configuration.AssemblyVersioningScheme) }, { AssemblyFileSemVer, semanticVersion.GetAssemblyFileVersion(configuration.AssemblyVersioningScheme) }, { FullSemVer, semanticVersion.ToString("f", formatter) }, { InformationalVersion, semanticVersion.ToString("i", formatter) }, { ClassicVersion, string.Format("{0}.{1}", semanticVersion.ToString("j"), (bmd.CommitsSinceTag ?? 0)) }, { ClassicVersionWithTag, string.Format("{0}.{1}{2}", semanticVersion.ToString("j"), bmd.CommitsSinceTag ?? 0, semanticVersion.PreReleaseTag.HasTag() ? "-" + semanticVersion.PreReleaseTag : null) }, { BranchName, bmd.Branch }, { Sha, bmd.Sha }, }; // Use ToLower() to fix a bug where Beta and beta are different in NuGet variables[NuGetVersionV2] = variables[LegacySemVerPadded].ToLower(); //variables[NuGetVersionV3] = variables[LegacySemVerPadded].ToLower(); // TODO: when v3 is released, determine what to use variables[NuGetVersion] = variables[NuGetVersionV2]; return(variables); }