From 788f185fd115bc90e703bebbc4b66b2d7158883d Mon Sep 17 00:00:00 2001 From: Andrei Ignat Date: Fri, 3 Apr 2026 08:53:20 +0300 Subject: [PATCH 1/2] first iteration --- README.md | 30 +- later.md | 2 +- v2/.tours/AssemblyMetadata.tour | 30 ++ v2/Generator/all.csv | 1 + v2/RSCGExamplesData/GeneratorDataRec.json | 6 + .../AssemblyMetadata/description.json | 22 + v2/rscg_examples/AssemblyMetadata/nuget.txt | 1 + v2/rscg_examples/AssemblyMetadata/readme.txt | 219 ++++++++++ .../AssemblyMetadata/src/DemoMeta.slnx | 3 + .../src/DemoMeta/DemoMeta.csproj | 18 + .../AssemblyMetadata/src/DemoMeta/Program.cs | 1 + v2/rscg_examples/AssemblyMetadata/video.json | 39 ++ .../docs/Authors/Benjamin_Abt.md | 7 + .../docs/Categories/EnhancementProject.md | 42 +- .../_PrimitiveEnhancementProject.mdx | 40 +- .../docs/RSCG-Examples/AssemblyMetadata.md | 399 ++++++++++++++++++ .../docs/RSCG-Examples/index.md | 13 +- v2/rscg_examples_site/docs/about.md | 2 +- v2/rscg_examples_site/docs/indexRSCG.md | 5 +- .../src/components/HomepageFeatures/index.js | 2 +- .../static/exports/RSCG.json | 8 + .../static/exports/RSCG.xlsx | Bin 13719 -> 13775 bytes 22 files changed, 839 insertions(+), 51 deletions(-) create mode 100644 v2/.tours/AssemblyMetadata.tour create mode 100644 v2/rscg_examples/AssemblyMetadata/description.json create mode 100644 v2/rscg_examples/AssemblyMetadata/nuget.txt create mode 100644 v2/rscg_examples/AssemblyMetadata/readme.txt create mode 100644 v2/rscg_examples/AssemblyMetadata/src/DemoMeta.slnx create mode 100644 v2/rscg_examples/AssemblyMetadata/src/DemoMeta/DemoMeta.csproj create mode 100644 v2/rscg_examples/AssemblyMetadata/src/DemoMeta/Program.cs create mode 100644 v2/rscg_examples/AssemblyMetadata/video.json create mode 100644 v2/rscg_examples_site/docs/Authors/Benjamin_Abt.md create mode 100644 v2/rscg_examples_site/docs/RSCG-Examples/AssemblyMetadata.md 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/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 + +

+ AssemblyMetadata +

+ +[![Main Build](https://github.com/BenjaminAbt/AssemblyMetadata/actions/workflows/main-build.yml/badge.svg)](https://github.com/BenjaminAbt/AssemblyMetadata/actions/workflows/main-build.yml) +[![NuGet](https://img.shields.io/nuget/v/AssemblyMetadata.svg?logo=nuget&label=AssemblyMetadata)](https://www.nuget.org/packages/AssemblyMetadata) +[![NuGet Downloads](https://img.shields.io/nuget/dt/AssemblyMetadata?logo=nuget&label=Downloads)](https://www.nuget.org/packages/AssemblyMetadata) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) +[![.NET](https://img.shields.io/badge/.NET-8%20%7C%209%20%7C%2010%20%7C%2011-512BD4?logo=dotnet)](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) [![Nuget](https://img.shields.io/nuget/dt/AssemblyMetadata?label=AssemblyMetadata)](https://www.nuget.org/packages/AssemblyMetadata/) ![GitHub Repo stars](https://img.shields.io/github/stars/BenjaminAbt/AssemblyMetadata?style=social) 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) [![Nuget](https://img.shields.io/nuget/dt/AssemblyVersionInfo?label=AssemblyVersionInfo)](https://www.nuget.org/packages/AssemblyVersionInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/BlackWhiteYoshi/AssemblyVersionInfo?style=social) 2025-07-28 + 1 [AssemblyMetadata](/docs/AssemblyMetadata) [![Nuget](https://img.shields.io/nuget/dt/AssemblyMetadata?label=AssemblyMetadata)](https://www.nuget.org/packages/AssemblyMetadata/) ![GitHub Repo stars](https://img.shields.io/github/stars/BenjaminAbt/AssemblyMetadata?style=social) 2026-04-02 - 2 [AutoInvoke.Generator](/docs/AutoInvoke.Generator) [![Nuget](https://img.shields.io/nuget/dt/AutoInvoke.Generator?label=AutoInvoke.Generator)](https://www.nuget.org/packages/AutoInvoke.Generator/) ![GitHub Repo stars](https://img.shields.io/github/stars/LokiMidgard/AutoInvoke.Generator?style=social) 2024-03-03 + 2 [AssemblyVersionInfo](/docs/AssemblyVersionInfo) [![Nuget](https://img.shields.io/nuget/dt/AssemblyVersionInfo?label=AssemblyVersionInfo)](https://www.nuget.org/packages/AssemblyVersionInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/BlackWhiteYoshi/AssemblyVersionInfo?style=social) 2025-07-28 - 3 [AutoSpectre](/docs/AutoSpectre) [![Nuget](https://img.shields.io/nuget/dt/AutoSpectre.SourceGeneration?label=AutoSpectre.SourceGeneration)](https://www.nuget.org/packages/AutoSpectre.SourceGeneration)[![Nuget](https://img.shields.io/nuget/dt/AutoSpectre?label=AutoSpectre)](https://www.nuget.org/packages/AutoSpectre) ![GitHub Repo stars](https://img.shields.io/github/stars/jeppevammenkristensen/auto-spectre?style=social) 2024-02-24 + 3 [AutoInvoke.Generator](/docs/AutoInvoke.Generator) [![Nuget](https://img.shields.io/nuget/dt/AutoInvoke.Generator?label=AutoInvoke.Generator)](https://www.nuget.org/packages/AutoInvoke.Generator/) ![GitHub Repo stars](https://img.shields.io/github/stars/LokiMidgard/AutoInvoke.Generator?style=social) 2024-03-03 - 4 [BuildInfo](/docs/BuildInfo) [![Nuget](https://img.shields.io/nuget/dt/BuildInfo?label=BuildInfo)](https://www.nuget.org/packages/BuildInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/linkdotnet/BuildInformation?style=social) 2024-01-20 + 4 [AutoSpectre](/docs/AutoSpectre) [![Nuget](https://img.shields.io/nuget/dt/AutoSpectre.SourceGeneration?label=AutoSpectre.SourceGeneration)](https://www.nuget.org/packages/AutoSpectre.SourceGeneration)[![Nuget](https://img.shields.io/nuget/dt/AutoSpectre?label=AutoSpectre)](https://www.nuget.org/packages/AutoSpectre) ![GitHub Repo stars](https://img.shields.io/github/stars/jeppevammenkristensen/auto-spectre?style=social) 2024-02-24 - 5 [Credfeto.Version.Information.Generator](/docs/Credfeto.Version.Information.Generator) [![Nuget](https://img.shields.io/nuget/dt/Credfeto.Version.Information.Generator?label=Credfeto.Version.Information.Generator)](https://www.nuget.org/packages/Credfeto.Version.Information.Generator/) ![GitHub Repo stars](https://img.shields.io/github/stars/credfeto/credfeto-version-constants-generator?style=social) 2024-11-05 + 5 [BuildInfo](/docs/BuildInfo) [![Nuget](https://img.shields.io/nuget/dt/BuildInfo?label=BuildInfo)](https://www.nuget.org/packages/BuildInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/linkdotnet/BuildInformation?style=social) 2024-01-20 - 6 [Larcanum.GitInfo](/docs/Larcanum.GitInfo) [![Nuget](https://img.shields.io/nuget/dt/Larcanum.GitInfo?label=Larcanum.GitInfo)](https://www.nuget.org/packages/Larcanum.GitInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/lord-executor/Larcanum.GitInfo?style=social) 2025-01-17 + 6 [Credfeto.Version.Information.Generator](/docs/Credfeto.Version.Information.Generator) [![Nuget](https://img.shields.io/nuget/dt/Credfeto.Version.Information.Generator?label=Credfeto.Version.Information.Generator)](https://www.nuget.org/packages/Credfeto.Version.Information.Generator/) ![GitHub Repo stars](https://img.shields.io/github/stars/credfeto/credfeto-version-constants-generator?style=social) 2024-11-05 - 7 [LinqGen.Generator](/docs/LinqGen.Generator) [![Nuget](https://img.shields.io/nuget/dt/LinqGen.Generator?label=LinqGen.Generator)](https://www.nuget.org/packages/LinqGen.Generator/)[![Nuget](https://img.shields.io/nuget/dt/LinqGen?label=LinqGen)](https://www.nuget.org/packages/LinqGen/) ![GitHub Repo stars](https://img.shields.io/github/stars/cathei/LinqGen?style=social) 2024-03-04 + 7 [Larcanum.GitInfo](/docs/Larcanum.GitInfo) [![Nuget](https://img.shields.io/nuget/dt/Larcanum.GitInfo?label=Larcanum.GitInfo)](https://www.nuget.org/packages/Larcanum.GitInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/lord-executor/Larcanum.GitInfo?style=social) 2025-01-17 - 8 [Pekspro.BuildInformationGenerator](/docs/Pekspro.BuildInformationGenerator) [![Nuget](https://img.shields.io/nuget/dt/Pekspro.BuildInformationGenerator?label=Pekspro.BuildInformationGenerator)](https://www.nuget.org/packages/Pekspro.BuildInformationGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/pekspro/BuildInformationGenerator?style=social) 2024-07-19 + 8 [LinqGen.Generator](/docs/LinqGen.Generator) [![Nuget](https://img.shields.io/nuget/dt/LinqGen.Generator?label=LinqGen.Generator)](https://www.nuget.org/packages/LinqGen.Generator/)[![Nuget](https://img.shields.io/nuget/dt/LinqGen?label=LinqGen)](https://www.nuget.org/packages/LinqGen/) ![GitHub Repo stars](https://img.shields.io/github/stars/cathei/LinqGen?style=social) 2024-03-04 - 9 [PlantUmlClassDiagramGenerator](/docs/PlantUmlClassDiagramGenerator) [![Nuget](https://img.shields.io/nuget/dt/PlantUmlClassDiagramGenerator.SourceGenerator?label=PlantUmlClassDiagramGenerator.SourceGenerator)](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator/)[![Nuget](https://img.shields.io/nuget/dt/PlantUmlClassDiagramGenerator.Attributes?label=PlantUmlClassDiagramGenerator.Attributes)](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.Attributes/) ![GitHub Repo stars](https://img.shields.io/github/stars/pierre3/PlantUmlClassDiagramGenerator?style=social) 2024-02-20 + 9 [Pekspro.BuildInformationGenerator](/docs/Pekspro.BuildInformationGenerator) [![Nuget](https://img.shields.io/nuget/dt/Pekspro.BuildInformationGenerator?label=Pekspro.BuildInformationGenerator)](https://www.nuget.org/packages/Pekspro.BuildInformationGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/pekspro/BuildInformationGenerator?style=social) 2024-07-19 - 10 [RSCG_AMS](/docs/RSCG_AMS) [![Nuget](https://img.shields.io/nuget/dt/RSCG_AMS?label=RSCG_AMS)](https://www.nuget.org/packages/RSCG_AMS/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_AMS?style=social) 2023-04-16 + 10 [PlantUmlClassDiagramGenerator](/docs/PlantUmlClassDiagramGenerator) [![Nuget](https://img.shields.io/nuget/dt/PlantUmlClassDiagramGenerator.SourceGenerator?label=PlantUmlClassDiagramGenerator.SourceGenerator)](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator/)[![Nuget](https://img.shields.io/nuget/dt/PlantUmlClassDiagramGenerator.Attributes?label=PlantUmlClassDiagramGenerator.Attributes)](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.Attributes/) ![GitHub Repo stars](https://img.shields.io/github/stars/pierre3/PlantUmlClassDiagramGenerator?style=social) 2024-02-20 - 11 [RSCG_ExportDiagram](/docs/RSCG_ExportDiagram) [![Nuget](https://img.shields.io/nuget/dt/RSCG_ExportDiagram?label=RSCG_ExportDiagram)](https://github.com/ignatandrei/RSCG_ExportDiagram) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_ExportDiagram?style=social) 2024-08-01 + 11 [RSCG_AMS](/docs/RSCG_AMS) [![Nuget](https://img.shields.io/nuget/dt/RSCG_AMS?label=RSCG_AMS)](https://www.nuget.org/packages/RSCG_AMS/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_AMS?style=social) 2023-04-16 - 12 [RSCG_FunctionsWithDI](/docs/RSCG_FunctionsWithDI) [![Nuget](https://img.shields.io/nuget/dt/RSCG_FunctionsWithDI?label=RSCG_FunctionsWithDI)](https://www.nuget.org/packages/RSCG_FunctionsWithDI/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/functionsdi?style=social) 2023-04-16 + 12 [RSCG_ExportDiagram](/docs/RSCG_ExportDiagram) [![Nuget](https://img.shields.io/nuget/dt/RSCG_ExportDiagram?label=RSCG_ExportDiagram)](https://github.com/ignatandrei/RSCG_ExportDiagram) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_ExportDiagram?style=social) 2024-08-01 - 13 [RSCG_NameGenerator](/docs/RSCG_NameGenerator) [![Nuget](https://img.shields.io/nuget/dt/RSCG_NameGenerator?label=RSCG_NameGenerator)](https://www.nuget.org/packages/RSCG_NameGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/NameGenerator?style=social) 2024-08-25 + 13 [RSCG_FunctionsWithDI](/docs/RSCG_FunctionsWithDI) [![Nuget](https://img.shields.io/nuget/dt/RSCG_FunctionsWithDI?label=RSCG_FunctionsWithDI)](https://www.nuget.org/packages/RSCG_FunctionsWithDI/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/functionsdi?style=social) 2023-04-16 - 14 [RSCG_TimeBombComment](/docs/RSCG_TimeBombComment) [![Nuget](https://img.shields.io/nuget/dt/RSCG_TimeBombComment?label=RSCG_TimeBombComment)](https://www.nuget.org/packages/RSCG_TimeBombComment/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_TimeBombComment?style=social) 2023-04-16 + 14 [RSCG_NameGenerator](/docs/RSCG_NameGenerator) [![Nuget](https://img.shields.io/nuget/dt/RSCG_NameGenerator?label=RSCG_NameGenerator)](https://www.nuget.org/packages/RSCG_NameGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/NameGenerator?style=social) 2024-08-25 - 15 [RSCG_Wait](/docs/RSCG_Wait) [![Nuget](https://img.shields.io/nuget/dt/RSCG_WaitAndOptions?label=RSCG_WaitAndOptions)](https://www.nuget.org/packages/RSCG_WaitAndOptions/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_WaitAndOptions?style=social) 2024-02-21 + 15 [RSCG_TimeBombComment](/docs/RSCG_TimeBombComment) [![Nuget](https://img.shields.io/nuget/dt/RSCG_TimeBombComment?label=RSCG_TimeBombComment)](https://www.nuget.org/packages/RSCG_TimeBombComment/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_TimeBombComment?style=social) 2023-04-16 - 16 [ShadowWriterProjectInfo](/docs/ShadowWriterProjectInfo) [![Nuget](https://img.shields.io/nuget/dt/ShadowWriter?label=ShadowWriter)](https://www.nuget.org/packages/ShadowWriter/) ![GitHub Repo stars](https://img.shields.io/github/stars/StefanStolz/ShadowWriter?style=social) 2025-07-27 + 16 [RSCG_Wait](/docs/RSCG_Wait) [![Nuget](https://img.shields.io/nuget/dt/RSCG_WaitAndOptions?label=RSCG_WaitAndOptions)](https://www.nuget.org/packages/RSCG_WaitAndOptions/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_WaitAndOptions?style=social) 2024-02-21 - 17 [ThisAssembly](/docs/ThisAssembly) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly?label=ThisAssembly)](https://www.nuget.org/packages/ThisAssembly) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2023-04-16 + 17 [ShadowWriterProjectInfo](/docs/ShadowWriterProjectInfo) [![Nuget](https://img.shields.io/nuget/dt/ShadowWriter?label=ShadowWriter)](https://www.nuget.org/packages/ShadowWriter/) ![GitHub Repo stars](https://img.shields.io/github/stars/StefanStolz/ShadowWriter?style=social) 2025-07-27 - 18 [ThisAssembly.Constants](/docs/ThisAssembly.Constants) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly.Constants?label=ThisAssembly.Constants)](https://www.nuget.org/packages/ThisAssembly.Constants/) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2024-07-18 + 18 [ThisAssembly](/docs/ThisAssembly) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly?label=ThisAssembly)](https://www.nuget.org/packages/ThisAssembly) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2023-04-16 - 19 [ThisAssembly.Metadata](/docs/ThisAssembly.Metadata) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly.Metadata?label=ThisAssembly.Metadata)](https://www.nuget.org/packages/ThisAssembly.Metadata/) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2024-07-20 + 19 [ThisAssembly.Constants](/docs/ThisAssembly.Constants) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly.Constants?label=ThisAssembly.Constants)](https://www.nuget.org/packages/ThisAssembly.Constants/) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2024-07-18 + + 20 [ThisAssembly.Metadata](/docs/ThisAssembly.Metadata) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly.Metadata?label=ThisAssembly.Metadata)](https://www.nuget.org/packages/ThisAssembly.Metadata/) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 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) [![Nuget](https://img.shields.io/nuget/dt/AssemblyVersionInfo?label=AssemblyVersionInfo)](https://www.nuget.org/packages/AssemblyVersionInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/BlackWhiteYoshi/AssemblyVersionInfo?style=social) 2025-07-28 + 1 [AssemblyMetadata](/docs/AssemblyMetadata) [![Nuget](https://img.shields.io/nuget/dt/AssemblyMetadata?label=AssemblyMetadata)](https://www.nuget.org/packages/AssemblyMetadata/) ![GitHub Repo stars](https://img.shields.io/github/stars/BenjaminAbt/AssemblyMetadata?style=social) 2026-04-02 - 2 [AutoInvoke.Generator](/docs/AutoInvoke.Generator) [![Nuget](https://img.shields.io/nuget/dt/AutoInvoke.Generator?label=AutoInvoke.Generator)](https://www.nuget.org/packages/AutoInvoke.Generator/) ![GitHub Repo stars](https://img.shields.io/github/stars/LokiMidgard/AutoInvoke.Generator?style=social) 2024-03-03 + 2 [AssemblyVersionInfo](/docs/AssemblyVersionInfo) [![Nuget](https://img.shields.io/nuget/dt/AssemblyVersionInfo?label=AssemblyVersionInfo)](https://www.nuget.org/packages/AssemblyVersionInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/BlackWhiteYoshi/AssemblyVersionInfo?style=social) 2025-07-28 - 3 [AutoSpectre](/docs/AutoSpectre) [![Nuget](https://img.shields.io/nuget/dt/AutoSpectre.SourceGeneration?label=AutoSpectre.SourceGeneration)](https://www.nuget.org/packages/AutoSpectre.SourceGeneration)[![Nuget](https://img.shields.io/nuget/dt/AutoSpectre?label=AutoSpectre)](https://www.nuget.org/packages/AutoSpectre) ![GitHub Repo stars](https://img.shields.io/github/stars/jeppevammenkristensen/auto-spectre?style=social) 2024-02-24 + 3 [AutoInvoke.Generator](/docs/AutoInvoke.Generator) [![Nuget](https://img.shields.io/nuget/dt/AutoInvoke.Generator?label=AutoInvoke.Generator)](https://www.nuget.org/packages/AutoInvoke.Generator/) ![GitHub Repo stars](https://img.shields.io/github/stars/LokiMidgard/AutoInvoke.Generator?style=social) 2024-03-03 - 4 [BuildInfo](/docs/BuildInfo) [![Nuget](https://img.shields.io/nuget/dt/BuildInfo?label=BuildInfo)](https://www.nuget.org/packages/BuildInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/linkdotnet/BuildInformation?style=social) 2024-01-20 + 4 [AutoSpectre](/docs/AutoSpectre) [![Nuget](https://img.shields.io/nuget/dt/AutoSpectre.SourceGeneration?label=AutoSpectre.SourceGeneration)](https://www.nuget.org/packages/AutoSpectre.SourceGeneration)[![Nuget](https://img.shields.io/nuget/dt/AutoSpectre?label=AutoSpectre)](https://www.nuget.org/packages/AutoSpectre) ![GitHub Repo stars](https://img.shields.io/github/stars/jeppevammenkristensen/auto-spectre?style=social) 2024-02-24 - 5 [Credfeto.Version.Information.Generator](/docs/Credfeto.Version.Information.Generator) [![Nuget](https://img.shields.io/nuget/dt/Credfeto.Version.Information.Generator?label=Credfeto.Version.Information.Generator)](https://www.nuget.org/packages/Credfeto.Version.Information.Generator/) ![GitHub Repo stars](https://img.shields.io/github/stars/credfeto/credfeto-version-constants-generator?style=social) 2024-11-05 + 5 [BuildInfo](/docs/BuildInfo) [![Nuget](https://img.shields.io/nuget/dt/BuildInfo?label=BuildInfo)](https://www.nuget.org/packages/BuildInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/linkdotnet/BuildInformation?style=social) 2024-01-20 - 6 [Larcanum.GitInfo](/docs/Larcanum.GitInfo) [![Nuget](https://img.shields.io/nuget/dt/Larcanum.GitInfo?label=Larcanum.GitInfo)](https://www.nuget.org/packages/Larcanum.GitInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/lord-executor/Larcanum.GitInfo?style=social) 2025-01-17 + 6 [Credfeto.Version.Information.Generator](/docs/Credfeto.Version.Information.Generator) [![Nuget](https://img.shields.io/nuget/dt/Credfeto.Version.Information.Generator?label=Credfeto.Version.Information.Generator)](https://www.nuget.org/packages/Credfeto.Version.Information.Generator/) ![GitHub Repo stars](https://img.shields.io/github/stars/credfeto/credfeto-version-constants-generator?style=social) 2024-11-05 - 7 [LinqGen.Generator](/docs/LinqGen.Generator) [![Nuget](https://img.shields.io/nuget/dt/LinqGen.Generator?label=LinqGen.Generator)](https://www.nuget.org/packages/LinqGen.Generator/)[![Nuget](https://img.shields.io/nuget/dt/LinqGen?label=LinqGen)](https://www.nuget.org/packages/LinqGen/) ![GitHub Repo stars](https://img.shields.io/github/stars/cathei/LinqGen?style=social) 2024-03-04 + 7 [Larcanum.GitInfo](/docs/Larcanum.GitInfo) [![Nuget](https://img.shields.io/nuget/dt/Larcanum.GitInfo?label=Larcanum.GitInfo)](https://www.nuget.org/packages/Larcanum.GitInfo/) ![GitHub Repo stars](https://img.shields.io/github/stars/lord-executor/Larcanum.GitInfo?style=social) 2025-01-17 - 8 [Pekspro.BuildInformationGenerator](/docs/Pekspro.BuildInformationGenerator) [![Nuget](https://img.shields.io/nuget/dt/Pekspro.BuildInformationGenerator?label=Pekspro.BuildInformationGenerator)](https://www.nuget.org/packages/Pekspro.BuildInformationGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/pekspro/BuildInformationGenerator?style=social) 2024-07-19 + 8 [LinqGen.Generator](/docs/LinqGen.Generator) [![Nuget](https://img.shields.io/nuget/dt/LinqGen.Generator?label=LinqGen.Generator)](https://www.nuget.org/packages/LinqGen.Generator/)[![Nuget](https://img.shields.io/nuget/dt/LinqGen?label=LinqGen)](https://www.nuget.org/packages/LinqGen/) ![GitHub Repo stars](https://img.shields.io/github/stars/cathei/LinqGen?style=social) 2024-03-04 - 9 [PlantUmlClassDiagramGenerator](/docs/PlantUmlClassDiagramGenerator) [![Nuget](https://img.shields.io/nuget/dt/PlantUmlClassDiagramGenerator.SourceGenerator?label=PlantUmlClassDiagramGenerator.SourceGenerator)](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator/)[![Nuget](https://img.shields.io/nuget/dt/PlantUmlClassDiagramGenerator.Attributes?label=PlantUmlClassDiagramGenerator.Attributes)](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.Attributes/) ![GitHub Repo stars](https://img.shields.io/github/stars/pierre3/PlantUmlClassDiagramGenerator?style=social) 2024-02-20 + 9 [Pekspro.BuildInformationGenerator](/docs/Pekspro.BuildInformationGenerator) [![Nuget](https://img.shields.io/nuget/dt/Pekspro.BuildInformationGenerator?label=Pekspro.BuildInformationGenerator)](https://www.nuget.org/packages/Pekspro.BuildInformationGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/pekspro/BuildInformationGenerator?style=social) 2024-07-19 - 10 [RSCG_AMS](/docs/RSCG_AMS) [![Nuget](https://img.shields.io/nuget/dt/RSCG_AMS?label=RSCG_AMS)](https://www.nuget.org/packages/RSCG_AMS/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_AMS?style=social) 2023-04-16 + 10 [PlantUmlClassDiagramGenerator](/docs/PlantUmlClassDiagramGenerator) [![Nuget](https://img.shields.io/nuget/dt/PlantUmlClassDiagramGenerator.SourceGenerator?label=PlantUmlClassDiagramGenerator.SourceGenerator)](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.SourceGenerator/)[![Nuget](https://img.shields.io/nuget/dt/PlantUmlClassDiagramGenerator.Attributes?label=PlantUmlClassDiagramGenerator.Attributes)](https://www.nuget.org/packages/PlantUmlClassDiagramGenerator.Attributes/) ![GitHub Repo stars](https://img.shields.io/github/stars/pierre3/PlantUmlClassDiagramGenerator?style=social) 2024-02-20 - 11 [RSCG_ExportDiagram](/docs/RSCG_ExportDiagram) [![Nuget](https://img.shields.io/nuget/dt/RSCG_ExportDiagram?label=RSCG_ExportDiagram)](https://github.com/ignatandrei/RSCG_ExportDiagram) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_ExportDiagram?style=social) 2024-08-01 + 11 [RSCG_AMS](/docs/RSCG_AMS) [![Nuget](https://img.shields.io/nuget/dt/RSCG_AMS?label=RSCG_AMS)](https://www.nuget.org/packages/RSCG_AMS/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_AMS?style=social) 2023-04-16 - 12 [RSCG_FunctionsWithDI](/docs/RSCG_FunctionsWithDI) [![Nuget](https://img.shields.io/nuget/dt/RSCG_FunctionsWithDI?label=RSCG_FunctionsWithDI)](https://www.nuget.org/packages/RSCG_FunctionsWithDI/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/functionsdi?style=social) 2023-04-16 + 12 [RSCG_ExportDiagram](/docs/RSCG_ExportDiagram) [![Nuget](https://img.shields.io/nuget/dt/RSCG_ExportDiagram?label=RSCG_ExportDiagram)](https://github.com/ignatandrei/RSCG_ExportDiagram) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_ExportDiagram?style=social) 2024-08-01 - 13 [RSCG_NameGenerator](/docs/RSCG_NameGenerator) [![Nuget](https://img.shields.io/nuget/dt/RSCG_NameGenerator?label=RSCG_NameGenerator)](https://www.nuget.org/packages/RSCG_NameGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/NameGenerator?style=social) 2024-08-25 + 13 [RSCG_FunctionsWithDI](/docs/RSCG_FunctionsWithDI) [![Nuget](https://img.shields.io/nuget/dt/RSCG_FunctionsWithDI?label=RSCG_FunctionsWithDI)](https://www.nuget.org/packages/RSCG_FunctionsWithDI/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/functionsdi?style=social) 2023-04-16 - 14 [RSCG_TimeBombComment](/docs/RSCG_TimeBombComment) [![Nuget](https://img.shields.io/nuget/dt/RSCG_TimeBombComment?label=RSCG_TimeBombComment)](https://www.nuget.org/packages/RSCG_TimeBombComment/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_TimeBombComment?style=social) 2023-04-16 + 14 [RSCG_NameGenerator](/docs/RSCG_NameGenerator) [![Nuget](https://img.shields.io/nuget/dt/RSCG_NameGenerator?label=RSCG_NameGenerator)](https://www.nuget.org/packages/RSCG_NameGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/NameGenerator?style=social) 2024-08-25 - 15 [RSCG_Wait](/docs/RSCG_Wait) [![Nuget](https://img.shields.io/nuget/dt/RSCG_WaitAndOptions?label=RSCG_WaitAndOptions)](https://www.nuget.org/packages/RSCG_WaitAndOptions/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_WaitAndOptions?style=social) 2024-02-21 + 15 [RSCG_TimeBombComment](/docs/RSCG_TimeBombComment) [![Nuget](https://img.shields.io/nuget/dt/RSCG_TimeBombComment?label=RSCG_TimeBombComment)](https://www.nuget.org/packages/RSCG_TimeBombComment/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_TimeBombComment?style=social) 2023-04-16 - 16 [ShadowWriterProjectInfo](/docs/ShadowWriterProjectInfo) [![Nuget](https://img.shields.io/nuget/dt/ShadowWriter?label=ShadowWriter)](https://www.nuget.org/packages/ShadowWriter/) ![GitHub Repo stars](https://img.shields.io/github/stars/StefanStolz/ShadowWriter?style=social) 2025-07-27 + 16 [RSCG_Wait](/docs/RSCG_Wait) [![Nuget](https://img.shields.io/nuget/dt/RSCG_WaitAndOptions?label=RSCG_WaitAndOptions)](https://www.nuget.org/packages/RSCG_WaitAndOptions/) ![GitHub Repo stars](https://img.shields.io/github/stars/ignatandrei/RSCG_WaitAndOptions?style=social) 2024-02-21 - 17 [ThisAssembly](/docs/ThisAssembly) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly?label=ThisAssembly)](https://www.nuget.org/packages/ThisAssembly) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2023-04-16 + 17 [ShadowWriterProjectInfo](/docs/ShadowWriterProjectInfo) [![Nuget](https://img.shields.io/nuget/dt/ShadowWriter?label=ShadowWriter)](https://www.nuget.org/packages/ShadowWriter/) ![GitHub Repo stars](https://img.shields.io/github/stars/StefanStolz/ShadowWriter?style=social) 2025-07-27 - 18 [ThisAssembly.Constants](/docs/ThisAssembly.Constants) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly.Constants?label=ThisAssembly.Constants)](https://www.nuget.org/packages/ThisAssembly.Constants/) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2024-07-18 + 18 [ThisAssembly](/docs/ThisAssembly) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly?label=ThisAssembly)](https://www.nuget.org/packages/ThisAssembly) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2023-04-16 - 19 [ThisAssembly.Metadata](/docs/ThisAssembly.Metadata) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly.Metadata?label=ThisAssembly.Metadata)](https://www.nuget.org/packages/ThisAssembly.Metadata/) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2024-07-20 + 19 [ThisAssembly.Constants](/docs/ThisAssembly.Constants) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly.Constants?label=ThisAssembly.Constants)](https://www.nuget.org/packages/ThisAssembly.Constants/) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 2024-07-18 + + 20 [ThisAssembly.Metadata](/docs/ThisAssembly.Metadata) [![Nuget](https://img.shields.io/nuget/dt/ThisAssembly.Metadata?label=ThisAssembly.Metadata)](https://www.nuget.org/packages/ThisAssembly.Metadata/) ![GitHub Repo stars](https://img.shields.io/github/stars/devlooped/ThisAssembly?style=social) 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..d73e3a5d0 --- /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 +[![Nuget](https://img.shields.io/nuget/dt/AssemblyMetadata?label=AssemblyMetadata)](https://www.nuget.org/packages/AssemblyMetadata/) +[![GitHub last commit](https://img.shields.io/github/last-commit/BenjaminAbt/AssemblyMetadata?label=updated)](https://github.com/BenjaminAbt/AssemblyMetadata) +![GitHub Repo stars](https://img.shields.io/github/stars/BenjaminAbt/AssemblyMetadata?style=social) + +## 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 +![Alt text](https://github.com/BenjaminAbt.png) +::: + +## Original Readme +:::note + +# AssemblyMetadata + +

+ AssemblyMetadata +

+ +[![Main Build](https://github.com/BenjaminAbt/AssemblyMetadata/actions/workflows/main-build.yml/badge.svg)](https://github.com/BenjaminAbt/AssemblyMetadata/actions/workflows/main-build.yml) +[![NuGet](https://img.shields.io/nuget/v/AssemblyMetadata.svg?logo=nuget&label=AssemblyMetadata)](https://www.nuget.org/packages/AssemblyMetadata) +[![NuGet Downloads](https://img.shields.io/nuget/dt/AssemblyMetadata?logo=nuget&label=Downloads)](https://www.nuget.org/packages/AssemblyMetadata) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) +[![.NET](https://img.shields.io/badge/.NET-8%20%7C%209%20%7C%2010%20%7C%2011-512BD4?logo=dotnet)](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! + + +::: + +### 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 859822196f3d670e47896d90d73bd1dc61b331bd..92078b07406e718f4383339815b4ab7fb845abf9 100644 GIT binary patch delta 10259 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

1wXpQd=u?G4#D-m$J?-lUEZ3Vq@{q6#QLX_ z_=yoR`f;#!Z403F?j(>mp0oGr{XOF*Ww14e#A`hT8z(2kRStp*jQU*z=dW_2FT;i@ zmO*^aKcHUhbj$Ge1I2iRmT|Kk=bJi;3e?}(M?q)O+>{?}*b0M&XEL+GOytYme}|a% zODhj-i`XN&B_(e>p^Wd#)Lq}Yf#r07L)s#*>kh-~#3-S6TRuC&%>2hfwv9=j*Sg!v zyeKY@Xs{f$rRoRZ{fGCdG=FI)CDYd&T3F`0u^bwLdK74!)*++!OsK)5i+adI$xmOu zwhQTFYN$TBm0I-A$dfUzpJadYLbmC?klNe*bu4u?&X6n_)NfJmama&q%6qL%hS-Jg zzrm|Mxx5aYAaDE8VMi)cgJR|~c(U3=Hg1?;K^vm`Vf!m@&e%!Jd2!ACDf!+((iMR&a*tGEjvncx5sVg4%(lW6{;Q9A$A>U7abd6ft4ER zJB>7)7+KX%y|q%Ug}Co2pwyjfxJ6q>y@H6%c(Ih=bF=-0;&wyCuw}$j6=$dXn|SrT zzo1m=VdN<_dyD%yGxz4fJ{0%Xy+ZX<0-Y1du9}=l)}M#!c~w|5$+j(&3B}3cLU>}h za=Q4?H}+~LecQmEl(S-@1V3-e#F59Kw)S}|=>XQv5Z{w_h^rB1B14|UqNn?3SQZ*W zR)r~2-Kqi$u?mN~S1k4_MJ6V6loIXqM zo6i^=_N$`{u)!q^@UAO7@F-u&2(_+>8!LhyUsylo(i7+I5F{W{3V0?(k)iIonjR<` zU_=7z6H#(KXuwLbeht5GV<#h?-0u*PviGj8ctiY!{7~KPP*+L*8Y32;c;7K{3CIv9 zGZ=h~)ur#UqF(v#gAM-Xthf!DUqfh+!k4u)Zy4!A5%$#1@M$|<1jh}l&rgP#2sA<; z2j7B(Gi=^63M-X?`^s;lyRbf2MKiXcA?D$VK=HnS=Bl~@8=#24X301xnOF1lm;J%A z>}F2ByBM_QwJRT|u~-Wh4wZ1U4dB4B%*2Q9#hp)uD-7nB9rM%eCsdu9$2oYt&>>uMsDk1>Pbd;aJMI!%g zRPQoC-ENcw$Bv3EdQl~72r;g6vjH?=_k_7gEE|Pw7z<|3g1uIRSd?}J^*g?);S^Vn zL4RoSkU&JDvtS-AVkGc~Pu4Y0X&JiwXg6hAV?8nEd3#ViCD&QX z?^q_(RbO!gxWK0!YH%V~)xQ?fc=#V>Uz6VKomIh|-Kii;pAh?gV)*x3*|+RSy9J&8 zI-sWZl$N1|%~tPY;W`Qi5S0TOchk4E~?wS_({>JVlWtBYo=g0549H#A3#C5SdXmezBYQ(bLiF40CYt}~8#Qp${ed2bk7iaRz zP0~K@C_LZx=6I#w0d?t&(S@EAY3B+ESn#M*igIV5)*A8;eh_Q58NGEBFP#}HV3$!s zr21Lt!n>J#Dz#AayV+h!0OyK{+G2>#4SepT@F#f0e>f$Ukv_)aS>D7q+h|En zRKagdd^qB@zqRkg*=`mwxEIJt1RfZQh+U2yl;;Q1$tbg`lAtX3gUNrfG?)eIQh2{4 zNLsLF=9VvJNOWaLc0S27LW~wh?2!y~%ERJ;lv#F3jKA_mWUHEgsUy66bhgFL;K~3W z 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 From 771c11a45e660c718817de5f43ab1e1911698ed9 Mon Sep 17 00:00:00 2001 From: Andrei Ignat Date: Fri, 3 Apr 2026 08:57:27 +0300 Subject: [PATCH 2/2] zip --- v2/book/examples/AssemblyMetadata.html | 53 ++++++++++++++++++ v2/book/examples/TypedPaths.html | 4 +- v2/book/list.html | 6 +- v2/book/pandocHTML.yaml | 1 + .../docs/RSCG-Examples/AssemblyMetadata.md | 34 +++++------ .../static/exports/RSCG.xlsx | Bin 13775 -> 13772 bytes .../static/sources/AssemblyMetadata.zip | Bin 0 -> 816 bytes 7 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 v2/book/examples/AssemblyMetadata.html create mode 100644 v2/rscg_examples_site/static/sources/AssemblyMetadata.zip 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 =>

@@ -1062,6 +1062,10 @@

+ + + +
259 TypedPaths
260AssemblyMetadata
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_site/docs/RSCG-Examples/AssemblyMetadata.md b/v2/rscg_examples_site/docs/RSCG-Examples/AssemblyMetadata.md index d73e3a5d0..098bbd634 100644 --- a/v2/rscg_examples_site/docs/RSCG-Examples/AssemblyMetadata.md +++ b/v2/rscg_examples_site/docs/RSCG-Examples/AssemblyMetadata.md @@ -49,7 +49,7 @@ Benjamin Abt ## Original Readme :::note -# AssemblyMetadata +### AssemblyMetadata

AssemblyMetadata @@ -58,7 +58,7 @@ Benjamin Abt [![Main Build](https://github.com/BenjaminAbt/AssemblyMetadata/actions/workflows/main-build.yml/badge.svg)](https://github.com/BenjaminAbt/AssemblyMetadata/actions/workflows/main-build.yml) [![NuGet](https://img.shields.io/nuget/v/AssemblyMetadata.svg?logo=nuget&label=AssemblyMetadata)](https://www.nuget.org/packages/AssemblyMetadata) [![NuGet Downloads](https://img.shields.io/nuget/dt/AssemblyMetadata?logo=nuget&label=Downloads)](https://www.nuget.org/packages/AssemblyMetadata) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/BenjaminAbt/AssemblyMetadata/LICENSE) [![.NET](https://img.shields.io/badge/.NET-8%20%7C%209%20%7C%2010%20%7C%2011-512BD4?logo=dotnet)](https://dotnet.microsoft.com) | Framework | .NET 10 | .NET 9 | .NET 8 | .NET Standard / 4.6.2+ | @@ -71,7 +71,7 @@ Zero runtime overhead. No reflection. No configuration required. --- -## Table of Contents +###### Table of Contents - [Why AssemblyMetadata?](#why-assemblymetadata) - [Installation](#installation) @@ -89,7 +89,7 @@ Zero runtime overhead. No reflection. No configuration required. --- -## Why AssemblyMetadata? +###### 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: @@ -112,7 +112,7 @@ AssemblyMetadata solves this differently: --- -## Installation +###### Installation Add the package to **any project** that needs build metadata: @@ -129,7 +129,7 @@ Add the package to **any project** that needs build metadata: --- -## Quick Start +###### Quick Start After adding the package, the generated class `AssemblyMetadataInfo` is immediately available anywhere in your project under the `BenjaminAbt.AssemblyMetadata` namespace: @@ -153,12 +153,12 @@ No additional configuration, properties, or attributes are required. --- -## API Reference +###### API Reference The generator produces a single file (`AssemblyMetadataInfo.gen.cs`) in the `BenjaminAbt.AssemblyMetadata` namespace. All members are `public const`. -### `AssemblyMetadataInfo.BuildInfo` +######### `AssemblyMetadataInfo.BuildInfo` | Member | Type | Description | |---|---|---| @@ -173,9 +173,9 @@ The generator produces a single file (`AssemblyMetadataInfo.gen.cs`) in the --- -## Usage Examples +###### Usage Examples -### Display Build Timestamp +######### Display Build Timestamp ```csharp using BenjaminAbt.AssemblyMetadata; @@ -184,7 +184,7 @@ Console.WriteLine(AssemblyMetadataInfo.BuildInfo.BuildTimestamp); // → 2026-03-02T14:35:07.1234567+00:00 ``` -### Parse into DateTimeOffset +######### 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: @@ -199,7 +199,7 @@ DateTimeOffset buildOn = DateTimeOffset.ParseExact( Console.WriteLine($"Built {(DateTimeOffset.UtcNow - buildOn).Days} days ago."); ``` -### Reconstruct from FileTime (zero-allocation) +######### Reconstruct from FileTime (zero-allocation) `BuildFileTimeUtc` lets you reconstruct a `DateTimeOffset` without any string parsing: @@ -213,7 +213,7 @@ DateTimeOffset buildOn = This is the fastest way to get a `DateTimeOffset` representation of the build time. -### Use Individual Components +######### Use Individual Components The integer constants allow zero-allocation formatting and direct numeric comparison: @@ -231,7 +231,7 @@ if (AssemblyMetadataInfo.BuildInfo.BuildDateYear < 2025) Console.WriteLine("Assembly was built before 2025."); ``` -### Build Age Check +######### Build Age Check ```csharp using System; @@ -244,7 +244,7 @@ if (age.TotalDays > 30) Console.WriteLine($"Warning: this build is {(int)age.TotalDays} days old."); ``` -### Health Endpoint +######### Health Endpoint Expose the build timestamp in an ASP.NET Core health or info endpoint: @@ -262,9 +262,9 @@ app.MapGet("/info", () => new --- -## License +###### License -[MIT](LICENSE) © [BEN ABT](https://benjamin-abt.com/) +[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! diff --git a/v2/rscg_examples_site/static/exports/RSCG.xlsx b/v2/rscg_examples_site/static/exports/RSCG.xlsx index 92078b07406e718f4383339815b4ab7fb845abf9..65248fa6fbf2b96ba48413678e6dbcd18b00f143 100644 GIT binary patch delta 764 zcmX?~eI~m;z?+#xgn@yBgW-o;a}0mTckw+83=B$)3=I50x*|uvJijPADL+43uOc_6 zx8IxZkO2?tdZ9{w%>c!at*MMcN!;ojE1egc6^gRI_{jNRclXE5sb{sXFMfSglsWp7 z=$U1b9A9Qhy*@7*vuNg;gxKlHg^MrD?Xa5o&Q?5`HMhRUSyA=1*xW~&ye}@F3n$Jr&>ZX&xiP zW+ujcjEp}vA7uKX%K-|3FDWtqH}5r&W)w&T9Of@wzFflhVFiM;J!cdMAq~z1G zcCXu$`Hj@;59R?wqb*+bQ?2i&Ej(&W(__nA_c$2%MPF146f&zY!rdNFKwChXyw6Wkyp5PG9UZz`{M3#=T{w{ zuDn#&JGEWu{g)n>#;u1Ub3<+2KQBG5?jKRhgcMktC5?3$!5#;vj>&!|Ci0+QfQBH0 zB?|)sFEFhjz{|-CO=K83=B$)3=I50x*|uvJijPADL+43uOc_6 zxBqnCAp;)Qdeu*IlNK>LUY*9Oyzu5B@rtN+HfGpDb^8_C zu7xsL8qe57TBliy`S=TUEY^}=$KX;I#{C%e!5?4kHx z$Gu;(|KpO>o|d^^Tu$;=C7$uBE@Axl?{3gfb&MKKAI>QNNyid!)H!x5pC3;CDKErCF!sY5kpa>c^Ygf0$5xdn&$R zqgNo%kNy!GrhNcE-rY6Q_rb-I>b~gG!sX2)y znfZCe8JPvecBsZZv8__RHJRH;z1}yE$&klwy-?--ll(kVT1>O^cDcqJU`bCq;v=NG zuyu3kMdhztyd0rDS6t0wBmd>t+n$VhzY{HRrJL^OGeeNvmoU!qu)F7c9<9KFvH!dE1ex0^D-)k_IWM zo9?P!i0`;}>)wTK^W_s`{;{43-p4bg;jO{8DW)Gj7o1;pi0NC^g$-+4U7{8RZQeV} zJd3U8|LhC9`;T7{e7f?of6SEiu68d@y4{G<3B1NVN4wG7)~@o11Oy_fYTW$m^FZD41~FX z=?no@PnI{8k_Q 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 0000000000000000000000000000000000000000..5d76cc384f3988aba47c584846f55d685869a15b GIT binary patch literal 816 zcmWIWW@Zs#U|`^25Or&giA-+pvjp-yfS4DET~c%NeN#&k^@?-yDmHVTJFlsG^33_o zkDmqwY~a*5b>7QYFOb7S=j4XaBG0pDzx(QXUTHV{GO3%pL2HW0m&Q}MUnYKGVhDiS z;S97RW6nDs2Sx^ldL{-22_!r8;g%&A7Zl}ZwFaH`J8U3evpwkl!A%wiR5L9Lyp$NT zR?9?bWeBqCEb=MqdIMuL3OE{I!aPJneCqW^?4%3WNrrc@X7_)lDJodi{1&*G^8^3=E z-Ys_2Of$O6VR9xfi|6YlFa zan8DQ_lSJctq0}nPMRkFm@;QhoFVs0Cj+6PcPjQzZa)5@$n}5ghnxNP7P$RsFaE8M z2=y3XsBbqFz3&SQ?Ia);Mh^9WqWtut#9Y1P;_Cg?`-|)13hVq<#Z?5Rd9LzLi(Aze zoD~OInx0OIm?SlGR>YFb zv!_{san8sj!hkzv0iA#Z;871sXUJNyB^ZRh6d)6(6+QVNn}RI>5T@J$CPug^h~NnD TW@Q5@Vg|xPKso}LUKtnwmgpQD literal 0 HcmV?d00001