Skip to content

Commit aaa8908

Browse files
asbjornuJakeGinnivan
authored andcommitted
Add GitVersionInformationAttribute to generated assembly info files to make reflection of the contained version information easier.
1 parent f7db56e commit aaa8908

6 files changed

+155
-4
lines changed

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_Major.approved.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ using System.Reflection;
55
[assembly: AssemblyFileVersion("2.3.4.0")]
66
[assembly: AssemblyInformationalVersion("2.3.4-beta.5+6.Branch.master.Sha.commitSha")]
77
[assembly: Fake.ReleaseDate("2014-03-06")]
8+
[assembly: Fake.GitVersionInformation()]
89

910
namespace Fake
1011
{
@@ -42,4 +43,28 @@ namespace Fake
4243
public static string NuGetVersion = "2.3.4-beta0005";
4344
public static string CommitDate = "2014-03-06";
4445
}
46+
47+
[System.Runtime.CompilerServices.CompilerGenerated]
48+
sealed class GitVersionInformationAttribute : System.Attribute
49+
{
50+
public string Major { get { return "2"; } }
51+
public string Minor { get { return "3"; } }
52+
public string Patch { get { return "4"; } }
53+
public string PreReleaseTag { get { return "beta.5"; } }
54+
public string PreReleaseTagWithDash { get { return "-beta.5"; } }
55+
public string BuildMetaData { get { return "6"; } }
56+
public string FullBuildMetaData { get { return "6.Branch.master.Sha.commitSha"; } }
57+
public string MajorMinorPatch { get { return "2.3.4"; } }
58+
public string SemVer { get { return "2.3.4-beta.5"; } }
59+
public string LegacySemVer { get { return "2.3.4-beta5"; } }
60+
public string LegacySemVerPadded { get { return "2.3.4-beta0005"; } }
61+
public string AssemblySemVer { get { return "2.0.0.0"; } }
62+
public string FullSemVer { get { return "2.3.4-beta.5+6"; } }
63+
public string InformationalVersion { get { return "2.3.4-beta.5+6.Branch.master.Sha.commitSha"; } }
64+
public string BranchName { get { return "master"; } }
65+
public string Sha { get { return "commitSha"; } }
66+
public string NuGetVersionV2 { get { return "2.3.4-beta0005"; } }
67+
public string NuGetVersion { get { return "2.3.4-beta0005"; } }
68+
public string CommitDate { get { return "2014-03-06"; } }
69+
}
4570
}

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinor.approved.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ using System.Reflection;
55
[assembly: AssemblyFileVersion("2.3.4.0")]
66
[assembly: AssemblyInformationalVersion("2.3.4-beta.5+6.Branch.master.Sha.commitSha")]
77
[assembly: Fake.ReleaseDate("2014-03-06")]
8+
[assembly: Fake.GitVersionInformation()]
89

910
namespace Fake
1011
{
@@ -42,4 +43,28 @@ namespace Fake
4243
public static string NuGetVersion = "2.3.4-beta0005";
4344
public static string CommitDate = "2014-03-06";
4445
}
46+
47+
[System.Runtime.CompilerServices.CompilerGenerated]
48+
sealed class GitVersionInformationAttribute : System.Attribute
49+
{
50+
public string Major { get { return "2"; } }
51+
public string Minor { get { return "3"; } }
52+
public string Patch { get { return "4"; } }
53+
public string PreReleaseTag { get { return "beta.5"; } }
54+
public string PreReleaseTagWithDash { get { return "-beta.5"; } }
55+
public string BuildMetaData { get { return "6"; } }
56+
public string FullBuildMetaData { get { return "6.Branch.master.Sha.commitSha"; } }
57+
public string MajorMinorPatch { get { return "2.3.4"; } }
58+
public string SemVer { get { return "2.3.4-beta.5"; } }
59+
public string LegacySemVer { get { return "2.3.4-beta5"; } }
60+
public string LegacySemVerPadded { get { return "2.3.4-beta0005"; } }
61+
public string AssemblySemVer { get { return "2.3.0.0"; } }
62+
public string FullSemVer { get { return "2.3.4-beta.5+6"; } }
63+
public string InformationalVersion { get { return "2.3.4-beta.5+6.Branch.master.Sha.commitSha"; } }
64+
public string BranchName { get { return "master"; } }
65+
public string Sha { get { return "commitSha"; } }
66+
public string NuGetVersionV2 { get { return "2.3.4-beta0005"; } }
67+
public string NuGetVersion { get { return "2.3.4-beta0005"; } }
68+
public string CommitDate { get { return "2014-03-06"; } }
69+
}
4570
}

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinorPatch.approved.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ using System.Reflection;
55
[assembly: AssemblyFileVersion("2.3.4.0")]
66
[assembly: AssemblyInformationalVersion("2.3.4-beta.5+6.Branch.master.Sha.commitSha")]
77
[assembly: Fake.ReleaseDate("2014-03-06")]
8+
[assembly: Fake.GitVersionInformation()]
89

910
namespace Fake
1011
{
@@ -42,4 +43,28 @@ namespace Fake
4243
public static string NuGetVersion = "2.3.4-beta0005";
4344
public static string CommitDate = "2014-03-06";
4445
}
46+
47+
[System.Runtime.CompilerServices.CompilerGenerated]
48+
sealed class GitVersionInformationAttribute : System.Attribute
49+
{
50+
public string Major { get { return "2"; } }
51+
public string Minor { get { return "3"; } }
52+
public string Patch { get { return "4"; } }
53+
public string PreReleaseTag { get { return "beta.5"; } }
54+
public string PreReleaseTagWithDash { get { return "-beta.5"; } }
55+
public string BuildMetaData { get { return "6"; } }
56+
public string FullBuildMetaData { get { return "6.Branch.master.Sha.commitSha"; } }
57+
public string MajorMinorPatch { get { return "2.3.4"; } }
58+
public string SemVer { get { return "2.3.4-beta.5"; } }
59+
public string LegacySemVer { get { return "2.3.4-beta5"; } }
60+
public string LegacySemVerPadded { get { return "2.3.4-beta0005"; } }
61+
public string AssemblySemVer { get { return "2.3.4.0"; } }
62+
public string FullSemVer { get { return "2.3.4-beta.5+6"; } }
63+
public string InformationalVersion { get { return "2.3.4-beta.5+6.Branch.master.Sha.commitSha"; } }
64+
public string BranchName { get { return "master"; } }
65+
public string Sha { get { return "commitSha"; } }
66+
public string NuGetVersionV2 { get { return "2.3.4-beta0005"; } }
67+
public string NuGetVersion { get { return "2.3.4-beta0005"; } }
68+
public string CommitDate { get { return "2014-03-06"; } }
69+
}
4570
}

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyAssemblyVersion_MajorMinorPatchTag.approved.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ using System.Reflection;
55
[assembly: AssemblyFileVersion("2.3.4.0")]
66
[assembly: AssemblyInformationalVersion("2.3.4-beta.5+6.Branch.master.Sha.commitSha")]
77
[assembly: Fake.ReleaseDate("2014-03-06")]
8+
[assembly: Fake.GitVersionInformation()]
89

910
namespace Fake
1011
{
@@ -42,4 +43,28 @@ namespace Fake
4243
public static string NuGetVersion = "2.3.4-beta0005";
4344
public static string CommitDate = "2014-03-06";
4445
}
46+
47+
[System.Runtime.CompilerServices.CompilerGenerated]
48+
sealed class GitVersionInformationAttribute : System.Attribute
49+
{
50+
public string Major { get { return "2"; } }
51+
public string Minor { get { return "3"; } }
52+
public string Patch { get { return "4"; } }
53+
public string PreReleaseTag { get { return "beta.5"; } }
54+
public string PreReleaseTagWithDash { get { return "-beta.5"; } }
55+
public string BuildMetaData { get { return "6"; } }
56+
public string FullBuildMetaData { get { return "6.Branch.master.Sha.commitSha"; } }
57+
public string MajorMinorPatch { get { return "2.3.4"; } }
58+
public string SemVer { get { return "2.3.4-beta.5"; } }
59+
public string LegacySemVer { get { return "2.3.4-beta5"; } }
60+
public string LegacySemVerPadded { get { return "2.3.4-beta0005"; } }
61+
public string AssemblySemVer { get { return "2.3.4.5"; } }
62+
public string FullSemVer { get { return "2.3.4-beta.5+6"; } }
63+
public string InformationalVersion { get { return "2.3.4-beta.5+6.Branch.master.Sha.commitSha"; } }
64+
public string BranchName { get { return "master"; } }
65+
public string Sha { get { return "commitSha"; } }
66+
public string NuGetVersionV2 { get { return "2.3.4-beta0005"; } }
67+
public string NuGetVersion { get { return "2.3.4-beta0005"; } }
68+
public string CommitDate { get { return "2014-03-06"; } }
69+
}
4570
}

src/GitVersionTask.Tests/AssemblyInfoBuilderTests.VerifyCreatedCode.approved.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ using System.Reflection;
55
[assembly: AssemblyFileVersion("1.2.3.0")]
66
[assembly: AssemblyInformationalVersion("1.2.3-unstable.4+5.Branch.feature1.Sha.commitSha")]
77
[assembly: Fake.ReleaseDate("2014-03-06")]
8+
[assembly: Fake.GitVersionInformation()]
89

910
namespace Fake
1011
{
@@ -42,4 +43,28 @@ namespace Fake
4243
public static string NuGetVersion = "1.2.3-unstable0004";
4344
public static string CommitDate = "2014-03-06";
4445
}
46+
47+
[System.Runtime.CompilerServices.CompilerGenerated]
48+
sealed class GitVersionInformationAttribute : System.Attribute
49+
{
50+
public string Major { get { return "1"; } }
51+
public string Minor { get { return "2"; } }
52+
public string Patch { get { return "3"; } }
53+
public string PreReleaseTag { get { return "unstable.4"; } }
54+
public string PreReleaseTagWithDash { get { return "-unstable.4"; } }
55+
public string BuildMetaData { get { return "5"; } }
56+
public string FullBuildMetaData { get { return "5.Branch.feature1.Sha.commitSha"; } }
57+
public string MajorMinorPatch { get { return "1.2.3"; } }
58+
public string SemVer { get { return "1.2.3-unstable.4"; } }
59+
public string LegacySemVer { get { return "1.2.3-unstable4"; } }
60+
public string LegacySemVerPadded { get { return "1.2.3-unstable0004"; } }
61+
public string AssemblySemVer { get { return "1.2.3.0"; } }
62+
public string FullSemVer { get { return "1.2.3-unstable.4+5"; } }
63+
public string InformationalVersion { get { return "1.2.3-unstable.4+5.Branch.feature1.Sha.commitSha"; } }
64+
public string BranchName { get { return "feature1"; } }
65+
public string Sha { get { return "commitSha"; } }
66+
public string NuGetVersionV2 { get { return "1.2.3-unstable0004"; } }
67+
public string NuGetVersion { get { return "1.2.3-unstable0004"; } }
68+
public string CommitDate { get { return "2014-03-06"; } }
69+
}
4570
}

src/GitVersionTask/AssemblyInfoBuilder/AssemblyInfoBuilder.cs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ public string GetAssemblyInfoText(VersionVariables vars, string assemblyName)
1717
[assembly: AssemblyVersion(""{0}"")]
1818
[assembly: AssemblyFileVersion(""{1}"")]
1919
[assembly: AssemblyInformationalVersion(""{2}"")]
20-
[assembly: {5}.ReleaseDate(""{3}"")]
20+
[assembly: {6}.ReleaseDate(""{3}"")]
21+
[assembly: {6}.GitVersionInformation()]
2122
22-
namespace {5}
23+
namespace {6}
2324
{{
2425
[System.Runtime.CompilerServices.CompilerGenerated]
2526
sealed class ReleaseDateAttribute : System.Attribute
@@ -37,19 +38,26 @@ static class GitVersionInformation
3738
{{
3839
{4}
3940
}}
41+
42+
[System.Runtime.CompilerServices.CompilerGenerated]
43+
sealed class GitVersionInformationAttribute : System.Attribute
44+
{{
45+
{5}
46+
}}
4047
}}
4148
",
4249
vars.AssemblySemVer,
4350
vars.MajorMinorPatch + ".0",
4451
vars.InformationalVersion,
4552
vars.CommitDate,
46-
GenerateVariableMembers(v),
53+
GenerateStaticVariableMembers(v),
54+
GenerateAttributeVariableMembers(v),
4755
assemblyName);
4856

4957
return assemblyInfo;
5058
}
5159

52-
static string GenerateVariableMembers(IList<KeyValuePair<string, string>> vars)
60+
static string GenerateStaticVariableMembers(IList<KeyValuePair<string, string>> vars)
5361
{
5462
var members = new StringBuilder();
5563
for (var i = 0; i < vars.Count; i++)
@@ -65,4 +73,22 @@ static string GenerateVariableMembers(IList<KeyValuePair<string, string>> vars)
6573

6674
return members.ToString();
6775
}
76+
77+
78+
static string GenerateAttributeVariableMembers(IList<KeyValuePair<string, string>> vars)
79+
{
80+
var members = new StringBuilder();
81+
for (var i = 0; i < vars.Count; i++)
82+
{
83+
var variable = vars[i];
84+
members.AppendFormat(" public string {0} {{ get {{ return \"{1}\"; }} }}", variable.Key, variable.Value);
85+
86+
if (i < vars.Count - 1)
87+
{
88+
members.AppendLine();
89+
}
90+
}
91+
92+
return members.ToString();
93+
}
6894
}

0 commit comments

Comments
 (0)