SharpPortico.SourceGenerator
1.5.0
dotnet add package SharpPortico.SourceGenerator --version 1.5.0
NuGet\Install-Package SharpPortico.SourceGenerator -Version 1.5.0
<PackageReference Include="SharpPortico.SourceGenerator" Version="1.5.0" />
<PackageVersion Include="SharpPortico.SourceGenerator" Version="1.5.0" />
<PackageReference Include="SharpPortico.SourceGenerator" />
paket add SharpPortico.SourceGenerator --version 1.5.0
#r "nuget: SharpPortico.SourceGenerator, 1.5.0"
#:package SharpPortico.SourceGenerator@1.5.0
#addin nuget:?package=SharpPortico.SourceGenerator&version=1.5.0
#tool nuget:?package=SharpPortico.SourceGenerator&version=1.5.0
SharpPortico.SourceGenerator

Incremental source generator: OpenAPI 3.0/3.1 → gRPC + protobuf + C# 14.
SharpPortico is a compile-time IIncrementalGenerator. Declare your OpenAPI spec (YAML or JSON) with an [assembly: OpenApiToGrpc] attribute or an MSBuild <AdditionalFiles> item, and it generates production-quality gRPC services, hand-written protobuf messages, typed C# 14 clients and DI wiring — zero reflection, NativeAOT-safe. Enable proxy mode and it also emits a {Service}Proxy that turns the service into a gRPC↔REST gateway for legacy APIs.
A property the contract declares nullable becomes a proto3 optional field, and its message gains Has…/Clear…, so "never set" and "set to the default" stay different answers on the wire and in the gateway. Nullable arrays and elements cannot be expressed by repeated and are reported instead of being dropped silently.
Add the spec to your project as an AdditionalFiles item — that is where the content comes from — and the
generator runs on every build:
<ItemGroup>
<PackageReference Include="SharpPortico.SourceGenerator" Version="1.5.0"
PrivateAssets="all" />
<AdditionalFiles Include="openapi/**/*.yaml" />
</ItemGroup>
Name the service and its namespace with MSBuild properties (per-file SharpporticoServiceName /
SharpporticoNamespace metadata works too, where the SDK surfaces it to analyzers):
<PropertyGroup>
<SharpPorticoServiceName>UserService</SharpPorticoServiceName>
<SharpPorticoNamespace>MyApp.Generated</SharpPorticoNamespace>
</PropertyGroup>
The [OpenApiToGrpc] attribute configures the same generation when you reference SharpPortico.Abstractions as a
project: it carries the mapping options (streaming hints, pagination, proxy mode), and the specification still has
to be an AdditionalFiles item.
Do not also add the generator by hand with
<Analyzer Include="...lib\netstandard2.0\SharpPortico.SourceGenerator.dll" />: the package ships it under bothanalyzers/dotnet/csandlib, and using both routes runs it twice.
📖 Full documentation, mapping rules & samples: SharpPortico on GitHub
License
MIT — see LICENSE. Copyright (c) 2026 MPCoreDeveloper.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.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 |
|---|---|---|
| 1.5.0 | 42 | 10/18/2026 |
| 1.4.0 | 43 | 10/17/2026 |
| 1.3.0-preview.1 | 65 | 9/30/2026 |
| 1.2.0-preview.1 | 69 | 9/19/2026 |
| 1.1.4-preview.1 | 68 | 9/19/2026 |
| 1.1.3-preview.1 | 60 | 9/19/2026 |
| 1.1.2-preview.1 | 68 | 9/19/2026 |
| 1.1.1 | 102 | 9/13/2026 |
| 1.1.0 | 101 | 9/13/2026 |
| 1.0.0 | 124 | 8/23/2026 |
| 0.4.0-RC.4 | 68 | 9/13/2026 |
| 0.4.0-RC.3 | 62 | 9/13/2026 |
| 0.4.0-RC.2 | 59 | 9/13/2026 |
| 0.4.0-RC.1 | 69 | 9/13/2026 |
| 0.3.0-RC.1 | 77 | 9/13/2026 |
| 0.2.0 | 103 | 9/9/2026 |