diff --git a/README.md b/README.md
index e299010cf..5cd7ec3f2 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-# RSCG - 259 Examples of Roslyn Source Code Generators / 16 created by Microsoft /
+# RSCG - 260 Examples of Roslyn Source Code Generators / 16 created by Microsoft /
-The RSCG_Examples repository is a comprehensive documentation system that automatically processes and showcases 259 Roslyn Source Code Generator (RSCG) examples. The system transforms individual RSCG projects into structured documentation with code examples and cross-referenced content with a searchable website and code example exports.
+The RSCG_Examples repository is a comprehensive documentation system that automatically processes and showcases 260 Roslyn Source Code Generator (RSCG) examples. The system transforms individual RSCG projects into structured documentation with code examples and cross-referenced content with a searchable website and code example exports.
This system serves as both a learning resource for .NET developers interested in source generators and an automated pipeline for maintaining up-to-date documentation about the RSCG ecosystem
-## Latest Update : 2026-04-01 => 01 April 2026
+## Latest Update : 2026-04-02 => 02 April 2026
If you want to see examples with code, please click ***[List V2](https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG)***
@@ -24,8 +24,30 @@ If you want to be notified each time I add a new RSCG example , please click htt
## Content
-Those are the 259 Roslyn Source Code Generators that I have tested you can see and download source code example.
+Those are the 260 Roslyn Source Code Generators that I have tested you can see and download source code example.
( including 16 from Microsoft )
+### 260. [AssemblyMetadata](https://ignatandrei.github.io/RSCG_Examples/v2/docs/AssemblyMetadata) , in the [EnhancementProject](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#enhancementproject) category
+
+Generated on : 2026-04-02 => 02 April 2026
+
+
+ Expand
+
+
+
+Author: Benjamin Abt
+
+Assembly Metadata Information
+
+Nuget: [https://www.nuget.org/packages/AssemblyMetadata/](https://www.nuget.org/packages/AssemblyMetadata/)
+
+
+Link: [https://ignatandrei.github.io/RSCG_Examples/v2/docs/AssemblyMetadata](https://ignatandrei.github.io/RSCG_Examples/v2/docs/AssemblyMetadata)
+
+Source: [https://github.com/BenjaminAbt/AssemblyMetadata](https://github.com/BenjaminAbt/AssemblyMetadata)
+
+
+
### 259. [TypedPaths](https://ignatandrei.github.io/RSCG_Examples/v2/docs/TypedPaths) , in the [FilesToCode](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#filestocode) category
Generated on : 2026-04-01 => 01 April 2026
diff --git a/later.md b/later.md
index 78d912786..ad3926896 100644
--- a/later.md
+++ b/later.md
@@ -1,6 +1,6 @@
# Just later
-## Latest Update : 2026-04-01 => 01 April 2026
+## Latest Update : 2026-04-02 => 02 April 2026
diff --git a/v2/.tours/AssemblyMetadata.tour b/v2/.tours/AssemblyMetadata.tour
new file mode 100644
index 000000000..7948e53bd
--- /dev/null
+++ b/v2/.tours/AssemblyMetadata.tour
@@ -0,0 +1,30 @@
+
+{
+ "$schema": "https://aka.ms/codetour-schema",
+ "title": "AssemblyMetadata",
+ "steps":
+ [
+ {
+ "file": "rscg_examples/AssemblyMetadata/src/DemoMeta/DemoMeta.csproj",
+ "description": "First, we add Nuget [AssemblyMetadata](https://www.nuget.org/packages/AssemblyMetadata/) in csproj ",
+ "pattern": "AssemblyMetadata"
+ }
+
+ ,{
+ "file": "rscg_examples/AssemblyMetadata/src/DemoMeta/Program.cs",
+ "description": "File Program.cs \r\n>> dotnet run --project rscg_examples/AssemblyMetadata/src/DemoMeta/DemoMeta.csproj ",
+ "pattern": "this is the code"
+ }
+
+
+ ,{
+ "file": "rscg_examples/AssemblyMetadata/src/DemoMeta/obj/GX/BenjaminAbt.AssemblyMetadata/BenjaminAbt.AssemblyMetadata.AssemblyMetadataGenerator/AssemblyMetadataInfo.gen.cs",
+ "description": "Generated File 1 from 1 : AssemblyMetadataInfo.gen.cs ",
+ "line": 1
+ }
+
+ ],
+
+ "ref": "main"
+
+}
\ No newline at end of file
diff --git a/v2/Generator/all.csv b/v2/Generator/all.csv
index cef41b3e9..fd71b0900 100644
--- a/v2/Generator/all.csv
+++ b/v2/Generator/all.csv
@@ -258,3 +258,4 @@ Nr,Key,Source,Category
257,Pekspro.DataAnnotationValuesExtractor, https://github.com/pekspro/DataAnnotationValuesExtractor,EnhancementClass
258,REslava.ResultFlow, https://github.com/reslava/nuget-package-reslava-result/,Documentation
259,TypedPaths, https://github.com/AlexChim1231/TypedPaths/,FilesToCode
+260,AssemblyMetadata, https://github.com/BenjaminAbt/AssemblyMetadata,EnhancementProject
diff --git a/v2/RSCGExamplesData/GeneratorDataRec.json b/v2/RSCGExamplesData/GeneratorDataRec.json
index 4ac4a9393..77e3baa94 100644
--- a/v2/RSCGExamplesData/GeneratorDataRec.json
+++ b/v2/RSCGExamplesData/GeneratorDataRec.json
@@ -1570,5 +1570,11 @@
"Category": 8,
"dtStart": "2026-04-01T00:00:00",
"show": true
+ },
+ {
+ "ID":"AssemblyMetadata",
+ "Category": 1,
+ "dtStart": "2026-04-02T00:00:00",
+ "show": true
}
]
\ No newline at end of file
diff --git a/v2/book/examples/AssemblyMetadata.html b/v2/book/examples/AssemblyMetadata.html
new file mode 100644
index 000000000..7b5f57925
--- /dev/null
+++ b/v2/book/examples/AssemblyMetadata.html
@@ -0,0 +1,53 @@
+
+
RSCG nr 260 : AssemblyMetadata
+
+Info
+Nuget : https://www.nuget.org/packages/AssemblyMetadata/
+
+You can find more details at : https://github.com/BenjaminAbt/AssemblyMetadata
+
+Author :Benjamin Abt
+
+Source: https://github.com/BenjaminAbt/AssemblyMetadata
+
+About
+
+Generate date time based metadata for assemblies.
+
+
+ How to use
+
+
+ Add reference to the AssemblyMetadata in the csproj
+
+
+
+This was for me the starting code
+
+
+ I have coded the file Program.cs
+
+
+
+ And here are the generated files
+
+
+ The file generated is AssemblyMetadataInfo.gen.cs
+
+
+
+
+ You can download the code and this page as pdf from
+
+ https://ignatandrei.github.io/RSCG_Examples/v2/docs/AssemblyMetadata
+
+
+
+
+
+ You can see the whole list at
+
+ https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG
+
+
+
diff --git a/v2/book/examples/TypedPaths.html b/v2/book/examples/TypedPaths.html
index 36fb1045f..ac99c9ee2 100644
--- a/v2/book/examples/TypedPaths.html
+++ b/v2/book/examples/TypedPaths.html
@@ -2,7 +2,7 @@
RSCG nr 259 : TypedPaths
Info
-Nuget : https://www.nuget.org/packages/TypedPaths/
+Nuget : https://www.nuget.org/packages/TypedPaths.Generator/
You can find more details at : https://github.com/AlexChim1231/TypedPaths/
@@ -18,7 +18,7 @@
How to use
- Add reference to the TypedPaths in the csproj
+ Add reference to the TypedPaths in the csproj
diff --git a/v2/book/list.html b/v2/book/list.html
index c141807a5..46fbd9a74 100644
--- a/v2/book/list.html
+++ b/v2/book/list.html
@@ -17,7 +17,7 @@
-This is the list of 259 RSCG with examples =>
+This is the list of 260 RSCG with examples =>
diff --git a/v2/book/pandocHTML.yaml b/v2/book/pandocHTML.yaml
index 20b8d311d..7574e560c 100644
--- a/v2/book/pandocHTML.yaml
+++ b/v2/book/pandocHTML.yaml
@@ -273,6 +273,7 @@ input-files:
- examples/Pekspro.DataAnnotationValuesExtractor.html
- examples/REslava.ResultFlow.html
- examples/TypedPaths.html
+- examples/AssemblyMetadata.html
# or you may use input-file: with a single value
# defaults:
diff --git a/v2/rscg_examples/AssemblyMetadata/description.json b/v2/rscg_examples/AssemblyMetadata/description.json
new file mode 100644
index 000000000..16ec36d68
--- /dev/null
+++ b/v2/rscg_examples/AssemblyMetadata/description.json
@@ -0,0 +1,22 @@
+{
+ "generator":{
+ "name":"AssemblyMetadata",
+ "nuget":[
+ "https://www.nuget.org/packages/AssemblyMetadata/"
+ ],
+ "link":"https://github.com/BenjaminAbt/AssemblyMetadata",
+ "author":"Benjamin Abt",
+ "source":"https://github.com/BenjaminAbt/AssemblyMetadata"
+ },
+ "data":{
+ "goodFor":["Generate date time based metadata for assemblies."],
+ "csprojDemo":"DemoMeta.csproj",
+ "csFiles":["Program.cs"],
+ "excludeDirectoryGenerated":[""],
+ "includeAdditionalFiles":[""]
+ },
+ "links":{
+ "blog":"",
+ "video":""
+ }
+}
\ No newline at end of file
diff --git a/v2/rscg_examples/AssemblyMetadata/nuget.txt b/v2/rscg_examples/AssemblyMetadata/nuget.txt
new file mode 100644
index 000000000..a99840775
--- /dev/null
+++ b/v2/rscg_examples/AssemblyMetadata/nuget.txt
@@ -0,0 +1 @@
+Assembly Metadata Information
\ No newline at end of file
diff --git a/v2/rscg_examples/AssemblyMetadata/readme.txt b/v2/rscg_examples/AssemblyMetadata/readme.txt
new file mode 100644
index 000000000..e03a1bc44
--- /dev/null
+++ b/v2/rscg_examples/AssemblyMetadata/readme.txt
@@ -0,0 +1,219 @@
+# AssemblyMetadata
+
+
+
+
+
+[](https://github.com/BenjaminAbt/AssemblyMetadata/actions/workflows/main-build.yml)
+[](https://www.nuget.org/packages/AssemblyMetadata)
+[](https://www.nuget.org/packages/AssemblyMetadata)
+[](LICENSE)
+[](https://dotnet.microsoft.com)
+
+| Framework | .NET 10 | .NET 9 | .NET 8 | .NET Standard / 4.6.2+ |
+|---|---|---|---|---|
+| Supported | ✅ | ✅ | ✅ |✅ |
+
+A **Roslyn incremental source generator** that embeds build-time metadata - timestamp, date and
+time components - as **compile-time constants** directly into your assembly.
+Zero runtime overhead. No reflection. No configuration required.
+
+---
+
+## Table of Contents
+
+- [Why AssemblyMetadata?](#why-assemblymetadata)
+- [Installation](#installation)
+- [Quick Start](#quick-start)
+- [API Reference](#api-reference)
+- [Usage Examples](#usage-examples)
+ - [Display Build Timestamp](#display-build-timestamp)
+ - [Parse into DateTimeOffset](#parse-into-datetimeoffset)
+ - [Reconstruct from FileTime (zero-allocation)](#reconstruct-from-filetime-zero-allocation)
+ - [Use Individual Components](#use-individual-components)
+ - [Build Age Check](#build-age-check)
+ - [Health Endpoint](#health-endpoint)
+- [Target Frameworks](#target-frameworks)
+- [License](#license)
+
+---
+
+## Why AssemblyMetadata?
+
+Knowing *when* an assembly was built is useful for diagnostics, "About" screens, deployment
+validation, and telemetry. The traditional approaches all have trade-offs:
+
+| Approach | Runtime cost | Dependency | Works with AOT? |
+|---|---|---|---|
+| Read `AssemblyInformationalVersion` attribute | Reflection at runtime | None | ⚠️ Limited |
+| Embed a resource file with the date | Resource deserialization | Build task | ⚠️ Yes |
+| **AssemblyMetadata (this package)** | **Zero - values are `const`** | **None (analyzer only)** | **✅ Yes** |
+
+AssemblyMetadata solves this differently:
+
+- **Compile-time constants** - values are `const`, so the JIT can inline and dead-code-eliminate them
+- **Zero-cost access** - reading the timestamp costs nothing beyond a register load
+- **No dependencies at runtime** - the NuGet package ships as a Roslyn source generator;
+ nothing is added to your runtime dependency graph
+- **NativeAOT-compatible** - `const` fields have no reflection or dynamic dispatch
+- **Incremental generator** - uses the modern Roslyn `IIncrementalGenerator` API, so the generator
+ only re-runs when the compilation changes, keeping build times fast
+
+---
+
+## Installation
+
+Add the package to **any project** that needs build metadata:
+
+```xml
+
+```
+
+> **`OutputItemType="Analyzer"`** and **`ReferenceOutputAssembly="false"`** are required.
+> They instruct MSBuild to load the package as a Roslyn source generator (not a regular assembly
+> reference), producing zero runtime dependencies.
+
+---
+
+## Quick Start
+
+After adding the package, the generated class `AssemblyMetadataInfo` is immediately available
+anywhere in your project under the `BenjaminAbt.AssemblyMetadata` namespace:
+
+```csharp
+using BenjaminAbt.AssemblyMetadata;
+
+// ISO 8601 UTC timestamp of the build
+string timestamp = AssemblyMetadataInfo.BuildInfo.BuildTimestamp;
+// → "2026-03-02T14:35:07.1234567+00:00"
+
+Console.WriteLine($"Built on {AssemblyMetadataInfo.BuildInfo.BuildDateYear}-"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildDateMonth:D2}-"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildDateDay:D2} "
+ + $"at {AssemblyMetadataInfo.BuildInfo.BuildTimeHour:D2}:"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildTimeMinute:D2}:"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildTimeSecond:D2} UTC");
+```
+
+No additional configuration, properties, or attributes are required.
+
+---
+
+## API Reference
+
+The generator produces a single file (`AssemblyMetadataInfo.gen.cs`) in the
+`BenjaminAbt.AssemblyMetadata` namespace. All members are `public const`.
+
+### `AssemblyMetadataInfo.BuildInfo`
+
+| Member | Type | Description |
+|---|---|---|
+| `BuildTimestamp` | `string` | Build time as a UTC ISO 8601 round-trip string (`"o"` format specifier) |
+| `BuildFileTimeUtc` | `long` | Build time as a Windows FileTime - 100-nanosecond intervals since 1601-01-01T00:00:00Z |
+| `BuildDateYear` | `int` | Year component of the UTC build date |
+| `BuildDateMonth` | `int` | Month component of the UTC build date (1–12) |
+| `BuildDateDay` | `int` | Day component of the UTC build date (1–31) |
+| `BuildTimeHour` | `int` | Hour component of the UTC build time (0–23) |
+| `BuildTimeMinute` | `int` | Minute component of the UTC build time (0–59) |
+| `BuildTimeSecond` | `int` | Second component of the UTC build time (0–59) |
+
+---
+
+## Usage Examples
+
+### Display Build Timestamp
+
+```csharp
+using BenjaminAbt.AssemblyMetadata;
+
+Console.WriteLine(AssemblyMetadataInfo.BuildInfo.BuildTimestamp);
+// → 2026-03-02T14:35:07.1234567+00:00
+```
+
+### Parse into DateTimeOffset
+
+Use the `"o"` round-trip format specifier to parse the stored constant back into a
+`DateTimeOffset` - the same format used by the generator:
+
+```csharp
+using System;
+using BenjaminAbt.AssemblyMetadata;
+
+DateTimeOffset buildOn = DateTimeOffset.ParseExact(
+ AssemblyMetadataInfo.BuildInfo.BuildTimestamp, "o", null);
+
+Console.WriteLine($"Built {(DateTimeOffset.UtcNow - buildOn).Days} days ago.");
+```
+
+### Reconstruct from FileTime (zero-allocation)
+
+`BuildFileTimeUtc` lets you reconstruct a `DateTimeOffset` without any string parsing:
+
+```csharp
+using System;
+using BenjaminAbt.AssemblyMetadata;
+
+DateTimeOffset buildOn =
+ DateTimeOffset.FromFileTime(AssemblyMetadataInfo.BuildInfo.BuildFileTimeUtc);
+```
+
+This is the fastest way to get a `DateTimeOffset` representation of the build time.
+
+### Use Individual Components
+
+The integer constants allow zero-allocation formatting and direct numeric comparison:
+
+```csharp
+using BenjaminAbt.AssemblyMetadata;
+
+// Compose a date string without DateTimeOffset overhead
+string buildDate =
+ $"{AssemblyMetadataInfo.BuildInfo.BuildDateYear}-"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildDateMonth:D2}-"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildDateDay:D2}";
+
+// Direct year comparison - no parsing, no allocation
+if (AssemblyMetadataInfo.BuildInfo.BuildDateYear < 2025)
+ Console.WriteLine("Assembly was built before 2025.");
+```
+
+### Build Age Check
+
+```csharp
+using System;
+using BenjaminAbt.AssemblyMetadata;
+
+TimeSpan age = DateTimeOffset.UtcNow
+ - DateTimeOffset.FromFileTime(AssemblyMetadataInfo.BuildInfo.BuildFileTimeUtc);
+
+if (age.TotalDays > 30)
+ Console.WriteLine($"Warning: this build is {(int)age.TotalDays} days old.");
+```
+
+### Health Endpoint
+
+Expose the build timestamp in an ASP.NET Core health or info endpoint:
+
+```csharp
+using BenjaminAbt.AssemblyMetadata;
+
+app.MapGet("/info", () => new
+{
+ BuildTimestamp = AssemblyMetadataInfo.BuildInfo.BuildTimestamp,
+ BuildYear = AssemblyMetadataInfo.BuildInfo.BuildDateYear,
+ BuildMonth = AssemblyMetadataInfo.BuildInfo.BuildDateMonth,
+ BuildDay = AssemblyMetadataInfo.BuildInfo.BuildDateDay,
+});
+```
+
+---
+
+## License
+
+[MIT](LICENSE) © [BEN ABT](https://benjamin-abt.com/)
+
+Please donate - if possible - to institutions of your choice such as child cancer aid,
+children's hospices, etc. Thanks!
diff --git a/v2/rscg_examples/AssemblyMetadata/src/DemoMeta.slnx b/v2/rscg_examples/AssemblyMetadata/src/DemoMeta.slnx
new file mode 100644
index 000000000..3f53e7d73
--- /dev/null
+++ b/v2/rscg_examples/AssemblyMetadata/src/DemoMeta.slnx
@@ -0,0 +1,3 @@
+
+
+
diff --git a/v2/rscg_examples/AssemblyMetadata/src/DemoMeta/DemoMeta.csproj b/v2/rscg_examples/AssemblyMetadata/src/DemoMeta/DemoMeta.csproj
new file mode 100644
index 000000000..94a70897c
--- /dev/null
+++ b/v2/rscg_examples/AssemblyMetadata/src/DemoMeta/DemoMeta.csproj
@@ -0,0 +1,18 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+
+
+
+
+
+
+ true
+ $(BaseIntermediateOutputPath)\GX
+
+
diff --git a/v2/rscg_examples/AssemblyMetadata/src/DemoMeta/Program.cs b/v2/rscg_examples/AssemblyMetadata/src/DemoMeta/Program.cs
new file mode 100644
index 000000000..dd8aac28d
--- /dev/null
+++ b/v2/rscg_examples/AssemblyMetadata/src/DemoMeta/Program.cs
@@ -0,0 +1 @@
+Console.WriteLine(BenjaminAbt.AssemblyMetadata.AssemblyMetadataInfo.BuildInfo.BuildDateYear);
diff --git a/v2/rscg_examples/AssemblyMetadata/video.json b/v2/rscg_examples/AssemblyMetadata/video.json
new file mode 100644
index 000000000..47da86fd4
--- /dev/null
+++ b/v2/rscg_examples/AssemblyMetadata/video.json
@@ -0,0 +1,39 @@
+{
+ "scriptName": "AssemblyMetadata",
+ "steps":
+[
+ {"typeStep":"exec","arg":"clipchamp.exe launch"},
+ {"typeStep":"text","arg": "Welcome to Roslyn Examples"},
+ {"typeStep":"text","arg":"If you want to see more examples , see List Of RSCG"},
+ {"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG"},
+ {"typeStep":"text","arg": "My name is Andrei Ignat and I am deeply fond of Roslyn Source Code Generator. "},
+
+{"typeStep":"text","arg": "Today I will present AssemblyMetadata . Generate date time based metadata for assemblies. ."},
+{"typeStep":"browser","arg":"https://www.nuget.org/packages/AssemblyMetadata/"},
+{"typeStep":"text","arg": "The whole example is here"},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/AssemblyMetadata"},
+{"typeStep":"text","arg": "You can download the code from here"},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/AssemblyMetadata#download-example-net--c-"},
+{"typeStep":"text","arg":"Here is the code downloaded "},
+{"typeStep":"exec","arg":"explorer.exe /select,D:\\gth\\RSCG_Examples\\v2\\Generator.sln"},
+{"typeStep":"text","arg": "So , let's start the project with Visual Studio Code "},
+{"typeStep":"stepvscode","arg": "-n D:\\gth\\RSCG_Examples\\v2"},
+
+{"typeStep":"text","arg": "To use it ,you will put the Nuget AssemblyMetadata into the csproj "},
+
+{"typeStep":"stepvscode","arg": "-r -g D:\\gth\\RSCG_Examples\\v2\\rscg_examples\\AssemblyMetadata\\src\\DemoMeta\\DemoMeta.csproj"},
+
+{"typeStep":"text","arg": "And now I will show you an example of using AssemblyMetadata"},
+
+{"typeStep":"hide","arg": "now execute the tour in VSCode"},
+{"typeStep":"tour", "arg": "src/.tours/"},
+{"typeStep":"text","arg":" And I will execute the project"},
+{"typeStep":"showproj", "arg":"DemoMeta.csproj"},
+{"typeStep":"text","arg":" This concludes the project"},
+{"typeStep":"waitseconds","arg":"30"},
+{"typeStep":"text","arg": "Remember, you can download the code from here"},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/AssemblyMetadata#download-example-net--c-",
+SpeakTest=" "},
+{"typeStep":"waitseconds","arg":"30"},
+]
+}
diff --git a/v2/rscg_examples_site/docs/Authors/Benjamin_Abt.md b/v2/rscg_examples_site/docs/Authors/Benjamin_Abt.md
new file mode 100644
index 000000000..6ef8262eb
--- /dev/null
+++ b/v2/rscg_examples_site/docs/Authors/Benjamin_Abt.md
@@ -0,0 +1,7 @@
+# Author : Benjamin Abt
+
+Number RSCG: 1
+
+
+ 1 [AssemblyMetadata](/docs/AssemblyMetadata) [](https://www.nuget.org/packages/AssemblyMetadata/)  2026-04-02
+
diff --git a/v2/rscg_examples_site/docs/Categories/EnhancementProject.md b/v2/rscg_examples_site/docs/Categories/EnhancementProject.md
index 53ceca0da..0b4b3e6f5 100644
--- a/v2/rscg_examples_site/docs/Categories/EnhancementProject.md
+++ b/v2/rscg_examples_site/docs/Categories/EnhancementProject.md
@@ -1,42 +1,44 @@
EnhancementProject
-Number RSCG: 19
+Number RSCG: 20
- 1 [AssemblyVersionInfo](/docs/AssemblyVersionInfo) [](https://www.nuget.org/packages/AssemblyVersionInfo/)  2025-07-28
+ 1 [AssemblyMetadata](/docs/AssemblyMetadata) [](https://www.nuget.org/packages/AssemblyMetadata/)  2026-04-02
- 2 [AutoInvoke.Generator](/docs/AutoInvoke.Generator) [](https://www.nuget.org/packages/AutoInvoke.Generator/)  2024-03-03
+ 2 [AssemblyVersionInfo](/docs/AssemblyVersionInfo) [](https://www.nuget.org/packages/AssemblyVersionInfo/)  2025-07-28
- 3 [AutoSpectre](/docs/AutoSpectre) [](https://www.nuget.org/packages/AutoSpectre.SourceGeneration)[](https://www.nuget.org/packages/AutoSpectre)  2024-02-24
+ 3 [AutoInvoke.Generator](/docs/AutoInvoke.Generator) [](https://www.nuget.org/packages/AutoInvoke.Generator/)  2024-03-03
- 4 [BuildInfo](/docs/BuildInfo) [](https://www.nuget.org/packages/BuildInfo/)  2024-01-20
+ 4 [AutoSpectre](/docs/AutoSpectre) [](https://www.nuget.org/packages/AutoSpectre.SourceGeneration)[](https://www.nuget.org/packages/AutoSpectre)  2024-02-24
- 5 [Credfeto.Version.Information.Generator](/docs/Credfeto.Version.Information.Generator) [](https://www.nuget.org/packages/Credfeto.Version.Information.Generator/)  2024-11-05
+ 5 [BuildInfo](/docs/BuildInfo) [](https://www.nuget.org/packages/BuildInfo/)  2024-01-20
- 6 [Larcanum.GitInfo](/docs/Larcanum.GitInfo) [](https://www.nuget.org/packages/Larcanum.GitInfo/)  2025-01-17
+ 6 [Credfeto.Version.Information.Generator](/docs/Credfeto.Version.Information.Generator) [](https://www.nuget.org/packages/Credfeto.Version.Information.Generator/)  2024-11-05
- 7 [LinqGen.Generator](/docs/LinqGen.Generator) [](https://www.nuget.org/packages/LinqGen.Generator/)[](https://www.nuget.org/packages/LinqGen/)  2024-03-04
+ 7 [Larcanum.GitInfo](/docs/Larcanum.GitInfo) [](https://www.nuget.org/packages/Larcanum.GitInfo/)  2025-01-17
- 8 [Pekspro.BuildInformationGenerator](/docs/Pekspro.BuildInformationGenerator) [](https://www.nuget.org/packages/Pekspro.BuildInformationGenerator/)  2024-07-19
+ 8 [LinqGen.Generator](/docs/LinqGen.Generator) [](https://www.nuget.org/packages/LinqGen.Generator/)[](https://www.nuget.org/packages/LinqGen/)  2024-03-04
- 9 [PlantUmlClassDiagramGenerator](/docs/PlantUmlClassDiagramGenerator) [](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator/)[](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.Attributes/)  2024-02-20
+ 9 [Pekspro.BuildInformationGenerator](/docs/Pekspro.BuildInformationGenerator) [](https://www.nuget.org/packages/Pekspro.BuildInformationGenerator/)  2024-07-19
- 10 [RSCG_AMS](/docs/RSCG_AMS) [](https://www.nuget.org/packages/RSCG_AMS/)  2023-04-16
+ 10 [PlantUmlClassDiagramGenerator](/docs/PlantUmlClassDiagramGenerator) [](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator/)[](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.Attributes/)  2024-02-20
- 11 [RSCG_ExportDiagram](/docs/RSCG_ExportDiagram) [](https://github.com/ignatandrei/RSCG_ExportDiagram)  2024-08-01
+ 11 [RSCG_AMS](/docs/RSCG_AMS) [](https://www.nuget.org/packages/RSCG_AMS/)  2023-04-16
- 12 [RSCG_FunctionsWithDI](/docs/RSCG_FunctionsWithDI) [](https://www.nuget.org/packages/RSCG_FunctionsWithDI/)  2023-04-16
+ 12 [RSCG_ExportDiagram](/docs/RSCG_ExportDiagram) [](https://github.com/ignatandrei/RSCG_ExportDiagram)  2024-08-01
- 13 [RSCG_NameGenerator](/docs/RSCG_NameGenerator) [](https://www.nuget.org/packages/RSCG_NameGenerator/)  2024-08-25
+ 13 [RSCG_FunctionsWithDI](/docs/RSCG_FunctionsWithDI) [](https://www.nuget.org/packages/RSCG_FunctionsWithDI/)  2023-04-16
- 14 [RSCG_TimeBombComment](/docs/RSCG_TimeBombComment) [](https://www.nuget.org/packages/RSCG_TimeBombComment/)  2023-04-16
+ 14 [RSCG_NameGenerator](/docs/RSCG_NameGenerator) [](https://www.nuget.org/packages/RSCG_NameGenerator/)  2024-08-25
- 15 [RSCG_Wait](/docs/RSCG_Wait) [](https://www.nuget.org/packages/RSCG_WaitAndOptions/)  2024-02-21
+ 15 [RSCG_TimeBombComment](/docs/RSCG_TimeBombComment) [](https://www.nuget.org/packages/RSCG_TimeBombComment/)  2023-04-16
- 16 [ShadowWriterProjectInfo](/docs/ShadowWriterProjectInfo) [](https://www.nuget.org/packages/ShadowWriter/)  2025-07-27
+ 16 [RSCG_Wait](/docs/RSCG_Wait) [](https://www.nuget.org/packages/RSCG_WaitAndOptions/)  2024-02-21
- 17 [ThisAssembly](/docs/ThisAssembly) [](https://www.nuget.org/packages/ThisAssembly)  2023-04-16
+ 17 [ShadowWriterProjectInfo](/docs/ShadowWriterProjectInfo) [](https://www.nuget.org/packages/ShadowWriter/)  2025-07-27
- 18 [ThisAssembly.Constants](/docs/ThisAssembly.Constants) [](https://www.nuget.org/packages/ThisAssembly.Constants/)  2024-07-18
+ 18 [ThisAssembly](/docs/ThisAssembly) [](https://www.nuget.org/packages/ThisAssembly)  2023-04-16
- 19 [ThisAssembly.Metadata](/docs/ThisAssembly.Metadata) [](https://www.nuget.org/packages/ThisAssembly.Metadata/)  2024-07-20
+ 19 [ThisAssembly.Constants](/docs/ThisAssembly.Constants) [](https://www.nuget.org/packages/ThisAssembly.Constants/)  2024-07-18
+
+ 20 [ThisAssembly.Metadata](/docs/ThisAssembly.Metadata) [](https://www.nuget.org/packages/ThisAssembly.Metadata/)  2024-07-20
\ No newline at end of file
diff --git a/v2/rscg_examples_site/docs/Categories/_PrimitiveEnhancementProject.mdx b/v2/rscg_examples_site/docs/Categories/_PrimitiveEnhancementProject.mdx
index a92e15638..793c37c54 100644
--- a/v2/rscg_examples_site/docs/Categories/_PrimitiveEnhancementProject.mdx
+++ b/v2/rscg_examples_site/docs/Categories/_PrimitiveEnhancementProject.mdx
@@ -1,42 +1,44 @@
### Category "EnhancementProject" has the following generators:
- 1 [AssemblyVersionInfo](/docs/AssemblyVersionInfo) [](https://www.nuget.org/packages/AssemblyVersionInfo/)  2025-07-28
+ 1 [AssemblyMetadata](/docs/AssemblyMetadata) [](https://www.nuget.org/packages/AssemblyMetadata/)  2026-04-02
- 2 [AutoInvoke.Generator](/docs/AutoInvoke.Generator) [](https://www.nuget.org/packages/AutoInvoke.Generator/)  2024-03-03
+ 2 [AssemblyVersionInfo](/docs/AssemblyVersionInfo) [](https://www.nuget.org/packages/AssemblyVersionInfo/)  2025-07-28
- 3 [AutoSpectre](/docs/AutoSpectre) [](https://www.nuget.org/packages/AutoSpectre.SourceGeneration)[](https://www.nuget.org/packages/AutoSpectre)  2024-02-24
+ 3 [AutoInvoke.Generator](/docs/AutoInvoke.Generator) [](https://www.nuget.org/packages/AutoInvoke.Generator/)  2024-03-03
- 4 [BuildInfo](/docs/BuildInfo) [](https://www.nuget.org/packages/BuildInfo/)  2024-01-20
+ 4 [AutoSpectre](/docs/AutoSpectre) [](https://www.nuget.org/packages/AutoSpectre.SourceGeneration)[](https://www.nuget.org/packages/AutoSpectre)  2024-02-24
- 5 [Credfeto.Version.Information.Generator](/docs/Credfeto.Version.Information.Generator) [](https://www.nuget.org/packages/Credfeto.Version.Information.Generator/)  2024-11-05
+ 5 [BuildInfo](/docs/BuildInfo) [](https://www.nuget.org/packages/BuildInfo/)  2024-01-20
- 6 [Larcanum.GitInfo](/docs/Larcanum.GitInfo) [](https://www.nuget.org/packages/Larcanum.GitInfo/)  2025-01-17
+ 6 [Credfeto.Version.Information.Generator](/docs/Credfeto.Version.Information.Generator) [](https://www.nuget.org/packages/Credfeto.Version.Information.Generator/)  2024-11-05
- 7 [LinqGen.Generator](/docs/LinqGen.Generator) [](https://www.nuget.org/packages/LinqGen.Generator/)[](https://www.nuget.org/packages/LinqGen/)  2024-03-04
+ 7 [Larcanum.GitInfo](/docs/Larcanum.GitInfo) [](https://www.nuget.org/packages/Larcanum.GitInfo/)  2025-01-17
- 8 [Pekspro.BuildInformationGenerator](/docs/Pekspro.BuildInformationGenerator) [](https://www.nuget.org/packages/Pekspro.BuildInformationGenerator/)  2024-07-19
+ 8 [LinqGen.Generator](/docs/LinqGen.Generator) [](https://www.nuget.org/packages/LinqGen.Generator/)[](https://www.nuget.org/packages/LinqGen/)  2024-03-04
- 9 [PlantUmlClassDiagramGenerator](/docs/PlantUmlClassDiagramGenerator) [](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator/)[](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.Attributes/)  2024-02-20
+ 9 [Pekspro.BuildInformationGenerator](/docs/Pekspro.BuildInformationGenerator) [](https://www.nuget.org/packages/Pekspro.BuildInformationGenerator/)  2024-07-19
- 10 [RSCG_AMS](/docs/RSCG_AMS) [](https://www.nuget.org/packages/RSCG_AMS/)  2023-04-16
+ 10 [PlantUmlClassDiagramGenerator](/docs/PlantUmlClassDiagramGenerator) [](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator/)[](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.Attributes/)  2024-02-20
- 11 [RSCG_ExportDiagram](/docs/RSCG_ExportDiagram) [](https://github.com/ignatandrei/RSCG_ExportDiagram)  2024-08-01
+ 11 [RSCG_AMS](/docs/RSCG_AMS) [](https://www.nuget.org/packages/RSCG_AMS/)  2023-04-16
- 12 [RSCG_FunctionsWithDI](/docs/RSCG_FunctionsWithDI) [](https://www.nuget.org/packages/RSCG_FunctionsWithDI/)  2023-04-16
+ 12 [RSCG_ExportDiagram](/docs/RSCG_ExportDiagram) [](https://github.com/ignatandrei/RSCG_ExportDiagram)  2024-08-01
- 13 [RSCG_NameGenerator](/docs/RSCG_NameGenerator) [](https://www.nuget.org/packages/RSCG_NameGenerator/)  2024-08-25
+ 13 [RSCG_FunctionsWithDI](/docs/RSCG_FunctionsWithDI) [](https://www.nuget.org/packages/RSCG_FunctionsWithDI/)  2023-04-16
- 14 [RSCG_TimeBombComment](/docs/RSCG_TimeBombComment) [](https://www.nuget.org/packages/RSCG_TimeBombComment/)  2023-04-16
+ 14 [RSCG_NameGenerator](/docs/RSCG_NameGenerator) [](https://www.nuget.org/packages/RSCG_NameGenerator/)  2024-08-25
- 15 [RSCG_Wait](/docs/RSCG_Wait) [](https://www.nuget.org/packages/RSCG_WaitAndOptions/)  2024-02-21
+ 15 [RSCG_TimeBombComment](/docs/RSCG_TimeBombComment) [](https://www.nuget.org/packages/RSCG_TimeBombComment/)  2023-04-16
- 16 [ShadowWriterProjectInfo](/docs/ShadowWriterProjectInfo) [](https://www.nuget.org/packages/ShadowWriter/)  2025-07-27
+ 16 [RSCG_Wait](/docs/RSCG_Wait) [](https://www.nuget.org/packages/RSCG_WaitAndOptions/)  2024-02-21
- 17 [ThisAssembly](/docs/ThisAssembly) [](https://www.nuget.org/packages/ThisAssembly)  2023-04-16
+ 17 [ShadowWriterProjectInfo](/docs/ShadowWriterProjectInfo) [](https://www.nuget.org/packages/ShadowWriter/)  2025-07-27
- 18 [ThisAssembly.Constants](/docs/ThisAssembly.Constants) [](https://www.nuget.org/packages/ThisAssembly.Constants/)  2024-07-18
+ 18 [ThisAssembly](/docs/ThisAssembly) [](https://www.nuget.org/packages/ThisAssembly)  2023-04-16
- 19 [ThisAssembly.Metadata](/docs/ThisAssembly.Metadata) [](https://www.nuget.org/packages/ThisAssembly.Metadata/)  2024-07-20
+ 19 [ThisAssembly.Constants](/docs/ThisAssembly.Constants) [](https://www.nuget.org/packages/ThisAssembly.Constants/)  2024-07-18
+
+ 20 [ThisAssembly.Metadata](/docs/ThisAssembly.Metadata) [](https://www.nuget.org/packages/ThisAssembly.Metadata/)  2024-07-20
### See category
diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/AssemblyMetadata.md b/v2/rscg_examples_site/docs/RSCG-Examples/AssemblyMetadata.md
new file mode 100644
index 000000000..098bbd634
--- /dev/null
+++ b/v2/rscg_examples_site/docs/RSCG-Examples/AssemblyMetadata.md
@@ -0,0 +1,399 @@
+---
+sidebar_position: 2600
+title: 260 - AssemblyMetadata
+description: Generate date time based metadata for assemblies.
+slug: /AssemblyMetadata
+---
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import TOCInline from '@theme/TOCInline';
+import SameCategory from '../Categories/_PrimitiveEnhancementProject.mdx';
+
+# AssemblyMetadata by Benjamin Abt
+
+
+
+
+## NuGet / site data
+[](https://www.nuget.org/packages/AssemblyMetadata/)
+[](https://github.com/BenjaminAbt/AssemblyMetadata)
+
+
+## Details
+
+### Info
+:::info
+
+Name: **AssemblyMetadata**
+
+Assembly Metadata Information
+
+Author: Benjamin Abt
+
+NuGet:
+*https://www.nuget.org/packages/AssemblyMetadata/*
+
+
+You can find more details at https://github.com/BenjaminAbt/AssemblyMetadata
+
+Source: https://github.com/BenjaminAbt/AssemblyMetadata
+
+:::
+
+### Author
+:::note
+Benjamin Abt
+
+:::
+
+## Original Readme
+:::note
+
+### AssemblyMetadata
+
+
+
+
+
+[](https://github.com/BenjaminAbt/AssemblyMetadata/actions/workflows/main-build.yml)
+[](https://www.nuget.org/packages/AssemblyMetadata)
+[](https://www.nuget.org/packages/AssemblyMetadata)
+[](https://github.com/BenjaminAbt/AssemblyMetadata/LICENSE)
+[](https://dotnet.microsoft.com)
+
+| Framework | .NET 10 | .NET 9 | .NET 8 | .NET Standard / 4.6.2+ |
+|---|---|---|---|---|
+| Supported | ✅ | ✅ | ✅ |✅ |
+
+A **Roslyn incremental source generator** that embeds build-time metadata - timestamp, date and
+time components - as **compile-time constants** directly into your assembly.
+Zero runtime overhead. No reflection. No configuration required.
+
+---
+
+###### Table of Contents
+
+- [Why AssemblyMetadata?](#why-assemblymetadata)
+- [Installation](#installation)
+- [Quick Start](#quick-start)
+- [API Reference](#api-reference)
+- [Usage Examples](#usage-examples)
+ - [Display Build Timestamp](#display-build-timestamp)
+ - [Parse into DateTimeOffset](#parse-into-datetimeoffset)
+ - [Reconstruct from FileTime (zero-allocation)](#reconstruct-from-filetime-zero-allocation)
+ - [Use Individual Components](#use-individual-components)
+ - [Build Age Check](#build-age-check)
+ - [Health Endpoint](#health-endpoint)
+- [Target Frameworks](#target-frameworks)
+- [License](#license)
+
+---
+
+###### Why AssemblyMetadata?
+
+Knowing *when* an assembly was built is useful for diagnostics, "About" screens, deployment
+validation, and telemetry. The traditional approaches all have trade-offs:
+
+| Approach | Runtime cost | Dependency | Works with AOT? |
+|---|---|---|---|
+| Read `AssemblyInformationalVersion` attribute | Reflection at runtime | None | ⚠️ Limited |
+| Embed a resource file with the date | Resource deserialization | Build task | ⚠️ Yes |
+| **AssemblyMetadata (this package)** | **Zero - values are `const`** | **None (analyzer only)** | **✅ Yes** |
+
+AssemblyMetadata solves this differently:
+
+- **Compile-time constants** - values are `const`, so the JIT can inline and dead-code-eliminate them
+- **Zero-cost access** - reading the timestamp costs nothing beyond a register load
+- **No dependencies at runtime** - the NuGet package ships as a Roslyn source generator;
+ nothing is added to your runtime dependency graph
+- **NativeAOT-compatible** - `const` fields have no reflection or dynamic dispatch
+- **Incremental generator** - uses the modern Roslyn `IIncrementalGenerator` API, so the generator
+ only re-runs when the compilation changes, keeping build times fast
+
+---
+
+###### Installation
+
+Add the package to **any project** that needs build metadata:
+
+```xml
+
+```
+
+> **`OutputItemType="Analyzer"`** and **`ReferenceOutputAssembly="false"`** are required.
+> They instruct MSBuild to load the package as a Roslyn source generator (not a regular assembly
+> reference), producing zero runtime dependencies.
+
+---
+
+###### Quick Start
+
+After adding the package, the generated class `AssemblyMetadataInfo` is immediately available
+anywhere in your project under the `BenjaminAbt.AssemblyMetadata` namespace:
+
+```csharp
+using BenjaminAbt.AssemblyMetadata;
+
+// ISO 8601 UTC timestamp of the build
+string timestamp = AssemblyMetadataInfo.BuildInfo.BuildTimestamp;
+// → "2026-03-02T14:35:07.1234567+00:00"
+
+Console.WriteLine($"Built on {AssemblyMetadataInfo.BuildInfo.BuildDateYear}-"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildDateMonth:D2}-"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildDateDay:D2} "
+ + $"at {AssemblyMetadataInfo.BuildInfo.BuildTimeHour:D2}:"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildTimeMinute:D2}:"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildTimeSecond:D2} UTC");
+```
+
+No additional configuration, properties, or attributes are required.
+
+---
+
+###### API Reference
+
+The generator produces a single file (`AssemblyMetadataInfo.gen.cs`) in the
+`BenjaminAbt.AssemblyMetadata` namespace. All members are `public const`.
+
+######### `AssemblyMetadataInfo.BuildInfo`
+
+| Member | Type | Description |
+|---|---|---|
+| `BuildTimestamp` | `string` | Build time as a UTC ISO 8601 round-trip string (`"o"` format specifier) |
+| `BuildFileTimeUtc` | `long` | Build time as a Windows FileTime - 100-nanosecond intervals since 1601-01-01T00:00:00Z |
+| `BuildDateYear` | `int` | Year component of the UTC build date |
+| `BuildDateMonth` | `int` | Month component of the UTC build date (1–12) |
+| `BuildDateDay` | `int` | Day component of the UTC build date (1–31) |
+| `BuildTimeHour` | `int` | Hour component of the UTC build time (0–23) |
+| `BuildTimeMinute` | `int` | Minute component of the UTC build time (0–59) |
+| `BuildTimeSecond` | `int` | Second component of the UTC build time (0–59) |
+
+---
+
+###### Usage Examples
+
+######### Display Build Timestamp
+
+```csharp
+using BenjaminAbt.AssemblyMetadata;
+
+Console.WriteLine(AssemblyMetadataInfo.BuildInfo.BuildTimestamp);
+// → 2026-03-02T14:35:07.1234567+00:00
+```
+
+######### Parse into DateTimeOffset
+
+Use the `"o"` round-trip format specifier to parse the stored constant back into a
+`DateTimeOffset` - the same format used by the generator:
+
+```csharp
+using System;
+using BenjaminAbt.AssemblyMetadata;
+
+DateTimeOffset buildOn = DateTimeOffset.ParseExact(
+ AssemblyMetadataInfo.BuildInfo.BuildTimestamp, "o", null);
+
+Console.WriteLine($"Built {(DateTimeOffset.UtcNow - buildOn).Days} days ago.");
+```
+
+######### Reconstruct from FileTime (zero-allocation)
+
+`BuildFileTimeUtc` lets you reconstruct a `DateTimeOffset` without any string parsing:
+
+```csharp
+using System;
+using BenjaminAbt.AssemblyMetadata;
+
+DateTimeOffset buildOn =
+ DateTimeOffset.FromFileTime(AssemblyMetadataInfo.BuildInfo.BuildFileTimeUtc);
+```
+
+This is the fastest way to get a `DateTimeOffset` representation of the build time.
+
+######### Use Individual Components
+
+The integer constants allow zero-allocation formatting and direct numeric comparison:
+
+```csharp
+using BenjaminAbt.AssemblyMetadata;
+
+// Compose a date string without DateTimeOffset overhead
+string buildDate =
+ $"{AssemblyMetadataInfo.BuildInfo.BuildDateYear}-"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildDateMonth:D2}-"
+ + $"{AssemblyMetadataInfo.BuildInfo.BuildDateDay:D2}";
+
+// Direct year comparison - no parsing, no allocation
+if (AssemblyMetadataInfo.BuildInfo.BuildDateYear < 2025)
+ Console.WriteLine("Assembly was built before 2025.");
+```
+
+######### Build Age Check
+
+```csharp
+using System;
+using BenjaminAbt.AssemblyMetadata;
+
+TimeSpan age = DateTimeOffset.UtcNow
+ - DateTimeOffset.FromFileTime(AssemblyMetadataInfo.BuildInfo.BuildFileTimeUtc);
+
+if (age.TotalDays > 30)
+ Console.WriteLine($"Warning: this build is {(int)age.TotalDays} days old.");
+```
+
+######### Health Endpoint
+
+Expose the build timestamp in an ASP.NET Core health or info endpoint:
+
+```csharp
+using BenjaminAbt.AssemblyMetadata;
+
+app.MapGet("/info", () => new
+{
+ BuildTimestamp = AssemblyMetadataInfo.BuildInfo.BuildTimestamp,
+ BuildYear = AssemblyMetadataInfo.BuildInfo.BuildDateYear,
+ BuildMonth = AssemblyMetadataInfo.BuildInfo.BuildDateMonth,
+ BuildDay = AssemblyMetadataInfo.BuildInfo.BuildDateDay,
+});
+```
+
+---
+
+###### License
+
+[MIT](https://github.com/BenjaminAbt/AssemblyMetadata/LICENSE) © [BEN ABT](https://benjamin-abt.com/)
+
+Please donate - if possible - to institutions of your choice such as child cancer aid,
+children's hospices, etc. Thanks!
+
+
+:::
+
+### About
+:::note
+
+Generate date time based metadata for assemblies.
+
+
+:::
+
+## How to use
+
+### Example (source csproj, source files)
+
+
+
+
+
+This is the CSharp Project that references **AssemblyMetadata**
+```xml showLineNumbers {11}
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+
+
+
+
+
+
+ true
+ $(BaseIntermediateOutputPath)\GX
+
+
+
+```
+
+
+
+
+
+ This is the use of **AssemblyMetadata** in *Program.cs*
+
+```csharp showLineNumbers
+Console.WriteLine(BenjaminAbt.AssemblyMetadata.AssemblyMetadataInfo.BuildInfo.BuildDateYear);
+
+```
+
+
+
+
+### Generated Files
+
+Those are taken from $(BaseIntermediateOutputPath)\GX
+
+
+
+
+```csharp showLineNumbers
+//
+namespace BenjaminAbt.AssemblyMetadata
+{
+ internal static class AssemblyMetadataInfo
+ {
+ /// Contains compile-time build metadata constants.
+ internal static class BuildInfo
+ {
+ /// Build time as UTC ISO 8601 string.
+ public const string BuildTimestamp = "2026-04-03T05:50:57.6130105+00:00";
+
+ /// Build time as Windows FileTime (100-ns intervals since 1601-01-01 UTC).
+ public const long BuildFileTimeUtc = 134196690576130105L;
+
+ /// Year component of the build date (UTC).
+ public const int BuildDateYear = 2026;
+
+ /// Month component of the build date (UTC).
+ public const int BuildDateMonth = 4;
+
+ /// Day component of the build date (UTC).
+ public const int BuildDateDay = 3;
+
+ /// Hour component of the build time (UTC, 24-hour).
+ public const int BuildTimeHour = 5;
+
+ /// Minute component of the build time (UTC).
+ public const int BuildTimeMinute = 50;
+
+ /// Second component of the build time (UTC).
+ public const int BuildTimeSecond = 57;
+ }
+ }
+}
+
+```
+
+
+
+
+## Useful
+
+### Download Example (.NET C#)
+
+:::tip
+
+[Download Example project AssemblyMetadata ](/sources/AssemblyMetadata.zip)
+
+:::
+
+
+### Share AssemblyMetadata
+
+
+
+https://ignatandrei.github.io/RSCG_Examples/v2/docs/AssemblyMetadata
+
+
+
diff --git a/v2/rscg_examples_site/docs/RSCG-Examples/index.md b/v2/rscg_examples_site/docs/RSCG-Examples/index.md
index 947a83d9e..c22611e77 100644
--- a/v2/rscg_examples_site/docs/RSCG-Examples/index.md
+++ b/v2/rscg_examples_site/docs/RSCG-Examples/index.md
@@ -1,7 +1,7 @@
---
sidebar_position: 30
-title: 259 RSCG list by category
-description: 259 RSCG list by category
+title: 260 RSCG list by category
+description: 260 RSCG list by category
slug: /rscg-examples
---
@@ -688,7 +688,7 @@ import DocCardList from '@theme/DocCardList';
## EnhancementProject
- Expand EnhancementProject =>examples:19
+ Expand EnhancementProject =>examples:20
@@ -784,6 +784,11 @@ import DocCardList from '@theme/DocCardList';
[AssemblyVersionInfo](/docs/AssemblyVersionInfo)
+
+
+
+[AssemblyMetadata](/docs/AssemblyMetadata)
+
@@ -1884,6 +1889,8 @@ flowchart LR;
EnhancementProject--> AssemblyVersionInfo((AssemblyVersionInfo))
+ EnhancementProject--> AssemblyMetadata((AssemblyMetadata))
+
Enum--> NetEscapades.EnumGenerators((NetEscapades.EnumGenerators))
Enum--> EnumClass((EnumClass))
diff --git a/v2/rscg_examples_site/docs/about.md b/v2/rscg_examples_site/docs/about.md
index df2316294..6c764c76c 100644
--- a/v2/rscg_examples_site/docs/about.md
+++ b/v2/rscg_examples_site/docs/about.md
@@ -6,7 +6,7 @@ title: About
## Content
You will find here code examples
-of 259 Roslyn Source Code Generator (RSCG)
+of 260 Roslyn Source Code Generator (RSCG)
that can be useful for you. That means, you will write more elegant and concise code - even if the generators code is not always nice to look.
## Are those examples ready for production?
diff --git a/v2/rscg_examples_site/docs/indexRSCG.md b/v2/rscg_examples_site/docs/indexRSCG.md
index 956d78c3e..cbac2d013 100644
--- a/v2/rscg_examples_site/docs/indexRSCG.md
+++ b/v2/rscg_examples_site/docs/indexRSCG.md
@@ -7,9 +7,9 @@ slug: /List-of-RSCG
import useBaseUrl from '@docusaurus/useBaseUrl';
-## 259 RSCG with examples in descending chronological order
+## 260 RSCG with examples in descending chronological order
-This is the list of 259 ( 16 from Microsoft) RSCG with examples
+This is the list of 260 ( 16 from Microsoft) RSCG with examples
[See by category](/docs/rscg-examples) [See as json](/exports/RSCG.json) [See as Excel](/exports/RSCG.xlsx)
@@ -20,6 +20,7 @@ This is the list of 259 ( 16 from Microsoft) RSCG with examples
| No | Name | Date | Category |
| --------- | ----- | ---- | -------- |
+|260| [AssemblyMetadata by Benjamin Abt ](/docs/AssemblyMetadata)|2026-04-02 => 02 April 2026 | [EnhancementProject](/docs/Categories/EnhancementProject) |
|259| [TypedPaths by Alex Chim ](/docs/TypedPaths)|2026-04-01 => 01 April 2026 | [FilesToCode](/docs/Categories/FilesToCode) |
|258| [REslava.ResultFlow by Rafa Eslava ](/docs/REslava.ResultFlow)|2026-03-18 => 18 March 2026 | [Documentation](/docs/Categories/Documentation) |
|257| [Pekspro.DataAnnotationValuesExtractor by Pekspro ](/docs/Pekspro.DataAnnotationValuesExtractor)|2026-02-15 => 15 February 2026 | [EnhancementClass](/docs/Categories/EnhancementClass) |
diff --git a/v2/rscg_examples_site/src/components/HomepageFeatures/index.js b/v2/rscg_examples_site/src/components/HomepageFeatures/index.js
index 16c8761e8..62068bf2a 100644
--- a/v2/rscg_examples_site/src/components/HomepageFeatures/index.js
+++ b/v2/rscg_examples_site/src/components/HomepageFeatures/index.js
@@ -4,7 +4,7 @@ import styles from './styles.module.css';
const FeatureList = [
{
-title: '259 Examples (16 from MSFT)',
+title: '260 Examples (16 from MSFT)',
Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
description: (
<>
diff --git a/v2/rscg_examples_site/static/exports/RSCG.json b/v2/rscg_examples_site/static/exports/RSCG.json
index 9c020af9d..67fe66842 100644
--- a/v2/rscg_examples_site/static/exports/RSCG.json
+++ b/v2/rscg_examples_site/static/exports/RSCG.json
@@ -2073,6 +2073,14 @@
"Source": "https://github.com/AlexChim1231/TypedPaths/",
"Category": "FilesToCode",
"AddedOn": "2026-04-01T00:00:00"
+ },
+ {
+ "Name": "AssemblyMetadata",
+ "Link": "https://ignatandrei.github.io/RSCG_Examples/v2/docs/AssemblyMetadata",
+ "NuGet": "https://www.nuget.org/packages/AssemblyMetadata/",
+ "Source": "https://github.com/BenjaminAbt/AssemblyMetadata",
+ "Category": "EnhancementProject",
+ "AddedOn": "2026-04-02T00:00:00"
}
]
}
\ No newline at end of file
diff --git a/v2/rscg_examples_site/static/exports/RSCG.xlsx b/v2/rscg_examples_site/static/exports/RSCG.xlsx
index 859822196..65248fa6f 100644
Binary files a/v2/rscg_examples_site/static/exports/RSCG.xlsx and b/v2/rscg_examples_site/static/exports/RSCG.xlsx differ
diff --git a/v2/rscg_examples_site/static/sources/AssemblyMetadata.zip b/v2/rscg_examples_site/static/sources/AssemblyMetadata.zip
new file mode 100644
index 000000000..5d76cc384
Binary files /dev/null and b/v2/rscg_examples_site/static/sources/AssemblyMetadata.zip differ