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 =>

@@ -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/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..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 +[![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)](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+ | +|---|---|---|---|---| +| 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