Phymnary.SugarPot.AspNetCore.Api.Roslyn
1.0.0
dotnet add package Phymnary.SugarPot.AspNetCore.Api.Roslyn --version 1.0.0
NuGet\Install-Package Phymnary.SugarPot.AspNetCore.Api.Roslyn -Version 1.0.0
<PackageReference Include="Phymnary.SugarPot.AspNetCore.Api.Roslyn" Version="1.0.0" />
<PackageVersion Include="Phymnary.SugarPot.AspNetCore.Api.Roslyn" Version="1.0.0" />
<PackageReference Include="Phymnary.SugarPot.AspNetCore.Api.Roslyn" />
paket add Phymnary.SugarPot.AspNetCore.Api.Roslyn --version 1.0.0
#r "nuget: Phymnary.SugarPot.AspNetCore.Api.Roslyn, 1.0.0"
#:package Phymnary.SugarPot.AspNetCore.Api.Roslyn@1.0.0
#addin nuget:?package=Phymnary.SugarPot.AspNetCore.Api.Roslyn&version=1.0.0
#tool nuget:?package=Phymnary.SugarPot.AspNetCore.Api.Roslyn&version=1.0.0
Phymnary.SugarPot.AspNetCore.Api.Roslyn
Roslyn analyzer + incremental source generator for Phymnary.SugarPot.AspNetCore.Api.
This project generates endpoint mapping code from API attributes and validates endpoint contracts at compile time.
What this project provides
- Incremental generator:
EndpointGenerator - Analyzer:
EndpointAnalyzer - Diagnostics descriptors for endpoint contract validation
Generation model
The generator scans for attributes from Phymnary.SugarPot.AspNetCore.Api:
[Endpoint]on endpoint classes[ApiSchema]on schema/controller classes[RoutePattern]on static group route-pattern methods[RouteBuilder]on static group route-builder methods
Then it emits .g.cs files to:
- Build route mapping for each endpoint
- Apply endpoint-level or nearest-group route customizations
- Generate schema/controller-level endpoint mapping methods
Endpoint conventions used by generator
For each [Endpoint] type:
- Handler method name is expected to be
HandleAsync - HTTP method is resolved in this order:
- explicit
[Endpoint(Method.X)] - endpoint class name prefix (
Get*,Post*, etc.) - namespace suffix (
.get,.post, etc.)
- explicit
- Route pattern is resolved by:
- endpoint member property
RoutePattern, or - closest
[RoutePattern]static group method
- endpoint member property
- Route builder customization is resolved by:
- endpoint member method
BuildRoute(RouteHandlerBuilder), or - closest
[RouteBuilder]static group method
- endpoint member method
Analyzer diagnostics
Current diagnostic:
SPAPI001(Error): class with[Endpoint]is missingHandleAsync.
Project structure
Components/Endpoint/EndpointGenerator*.cs- generator pipeline and syntax constructionComponents/Endpoint/EndpointAnalyzer.cs- semantic validationDiagnostics/DiagnosticDescriptors.cs- analyzer metadataConstants/GeneratorConstant.cs- shared generator constants
Dependencies
Microsoft.CodeAnalysis.AnalyzersMicrosoft.CodeAnalysis.CSharp.WorkspacesPhymnary.SugarPot.RoslynComponents
How it is consumed
This analyzer/generator is intended to be packaged with the runtime API package (Phymnary.SugarPot.AspNetCore.Api) and loaded by the compiler as an analyzer.
Local development notes
- Build this project to validate generator and analyzer changes.
- Verify generated output in consumer projects where endpoint attributes are used.
- Keep diagnostics documented in
AnalyzerReleases.Shipped.md/AnalyzerReleases.Unshipped.md.
Target framework
- .NET Standard 2.0 (analyzer/generator compatibility target)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp.Workspaces (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|