@@ -71,6 +71,8 @@ the code is regenerated.
7171
7272 public string GitCommitId { get ; set ; }
7373
74+ public string GitCommitDateTicks { get ; set ; }
75+
7476#if NET461
7577 public override bool Execute ( )
7678 {
@@ -123,7 +125,7 @@ private CodeTypeDeclaration CreateThisAssemblyClass()
123125 IsPartial = true ,
124126 TypeAttributes = TypeAttributes . NotPublic | TypeAttributes . Sealed ,
125127 } ;
126-
128+
127129 var codeAttributeDeclarationCollection = new CodeAttributeDeclarationCollection ( ) ;
128130 codeAttributeDeclarationCollection . Add ( new CodeAttributeDeclaration ( "System.CodeDom.Compiler.GeneratedCode" ,
129131 new CodeAttributeArgument ( new CodePrimitiveExpression ( GeneratorName ) ) ,
@@ -151,6 +153,12 @@ private CodeTypeDeclaration CreateThisAssemblyClass()
151153 { "AssemblyConfiguration" , this . AssemblyConfiguration } ,
152154 { "GitCommitId" , this . GitCommitId } ,
153155 } ) . ToArray ( ) ) ;
156+
157+ if ( long . TryParse ( this . GitCommitDateTicks , out long gitCommitDateTicks ) )
158+ {
159+ thisAssembly . Members . AddRange ( CreateCommitDateProperty ( gitCommitDateTicks ) . ToArray ( ) ) ;
160+ }
161+
154162 if ( hasKeyInfo )
155163 {
156164 thisAssembly . Members . AddRange ( CreateFields ( new Dictionary < string , string >
@@ -215,6 +223,38 @@ private static CodeMemberField CreateField(string name, string value)
215223 } ;
216224 }
217225
226+ private static IEnumerable < CodeTypeMember > CreateCommitDateProperty ( long ticks )
227+ {
228+ // internal static System.DateTimeOffset GitCommitDate {{ get; }} = new System.DateTimeOffset({ticks}, System.TimeSpan.Zero);");
229+ yield return new CodeMemberField ( typeof ( DateTimeOffset ) , "gitCommitDate" )
230+ {
231+ Attributes = MemberAttributes . Private ,
232+ InitExpression = new CodeObjectCreateExpression (
233+ typeof ( DateTimeOffset ) ,
234+ new CodePrimitiveExpression ( ticks ) ,
235+ new CodePropertyReferenceExpression (
236+ new CodeTypeReferenceExpression ( typeof ( TimeSpan ) ) ,
237+ nameof ( TimeSpan . Zero ) ) )
238+ } ;
239+
240+ var property = new CodeMemberProperty ( )
241+ {
242+ Attributes = MemberAttributes . Assembly ,
243+ Type = new CodeTypeReference ( typeof ( DateTimeOffset ) ) ,
244+ Name = "GitCommitDate" ,
245+ HasGet = true ,
246+ HasSet = false ,
247+ } ;
248+
249+ property . GetStatements . Add (
250+ new CodeMethodReturnStatement (
251+ new CodeFieldReferenceExpression (
252+ null ,
253+ "gitCommitDate" ) ) ) ;
254+
255+ yield return property ;
256+ }
257+
218258 private static CodeAttributeDeclaration DeclareAttribute ( Type attributeType , params CodeAttributeArgument [ ] arguments )
219259 {
220260 var assemblyTypeReference = new CodeTypeReference ( attributeType ) ;
@@ -325,6 +365,11 @@ private void GenerateThisAssemblyClass()
325365 }
326366 }
327367
368+ if ( long . TryParse ( this . GitCommitDateTicks , out long gitCommitDateTicks ) )
369+ {
370+ this . generator . AddCommitDateProperty ( gitCommitDateTicks ) ;
371+ }
372+
328373 // These properties should be defined even if they are empty.
329374 this . generator . AddThisAssemblyMember ( "RootNamespace" , this . RootNamespace ) ;
330375
@@ -380,6 +425,8 @@ internal void AddBlankLine()
380425 this . codeBuilder . AppendLine ( ) ;
381426 }
382427
428+ internal abstract void AddCommitDateProperty ( long ticks ) ;
429+
383430 protected void AddCodeComment ( string comment , string token )
384431 {
385432 var sr = new StringReader ( comment ) ;
@@ -414,6 +461,11 @@ internal override void DeclareAttribute(Type type, string arg)
414461 this . codeBuilder . AppendLine ( $ "[<assembly: { type . FullName } (\" { arg } \" )>]") ;
415462 }
416463
464+ internal override void AddCommitDateProperty ( long ticks )
465+ {
466+ this . codeBuilder . AppendLine ( $ " static member internal GitCommitDate = new DateTimeOffset({ ticks } , TimeZpan.Zero)") ;
467+ }
468+
417469 internal override void EndThisAssemblyClass ( )
418470 {
419471 this . codeBuilder . AppendLine ( "do()" ) ;
@@ -450,6 +502,11 @@ internal override void AddThisAssemblyMember(string name, string value)
450502 this . codeBuilder . AppendLine ( $ " internal const string { name } = \" { value } \" ;") ;
451503 }
452504
505+ internal override void AddCommitDateProperty ( long ticks )
506+ {
507+ this . codeBuilder . AppendLine ( $ " internal static readonly System.DateTimeOffset GitCommitDate = new System.DateTimeOffset({ ticks } , System.TimeSpan.Zero);") ;
508+ }
509+
453510 internal override void EndThisAssemblyClass ( )
454511 {
455512 this . codeBuilder . AppendLine ( "}" ) ;
@@ -479,6 +536,11 @@ internal override void AddThisAssemblyMember(string name, string value)
479536 this . codeBuilder . AppendLine ( $ " Friend Const { name } As String = \" { value } \" ") ;
480537 }
481538
539+ internal override void AddCommitDateProperty ( long ticks )
540+ {
541+ this . codeBuilder . AppendLine ( $ " Friend Shared ReadOnly GitCommitDate As System.DateTimeOffset = New System.DateTimeOffset({ ticks } , System.TimeSpan.Zero)") ;
542+ }
543+
482544 internal override void EndThisAssemblyClass ( )
483545 {
484546 this . codeBuilder . AppendLine ( "End Class" ) ;
0 commit comments