NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #217 most downloaded on NuGet
Provides simple access to fast and efficient "Protocol Buffers" serialization from .NET applications
Last release 22 days ago
16 Sep 2026
Release timing varies
gaps range from 9 days to 13 months
Most releases are documented
notes for 50 of the last 60 stable releases
25 versions withdrawn
withdrawn after publishing
127 years old
110 releases · first in 1900
Seed the model from [ProtoConnect], and add [NoSideEffects] for Connect GET by @mgravell in #1354
Full Changelog: 3.4.29...3.4.30
Connect build-time tooling: reverse CI check, and endpoint metadata on code-first endpoints (PBN5008) by @mgravell in #1353
Full Changelog: 3.4.28...3.4.29
One column per quarter.
Bump nbgv from 3.9.50 to 3.10.91 by @dependabot [bot] in #1335
Full Changelog: 3.4.21...3.4.28
Point the package project URL at the site by @mgravell in #1331
PBN2001: don't report constants, static members or nested types on a service interface by @mgravell in #1327
Full Changelog: 3.4.14...3.4.19
Out-of-band sub-types for the AOT generator: [ProtoSubType] by @mgravell in #1317
Full Changelog: 3.4.0...3.4.14
The headline feature is experimental gRPC AOT support to accompany type-model AOT support .
The headline feature is experimental gRPC AOT support to accompany type-model AOT support.
(features)
(background)
Full Changelog: 3.3.21...3.4.0
Stop publishing protobuf-net.BuildTools (3.3.8 is final; deprecate it) by @mgravell in #1267
foo: [a, b] by @rayokota in #1269(CI etc)
object on every non-generic serialize (2.3 KB/call, ~40x) by @mgravell in #1280Full Changelog: 3.3.8...3.3.21
(minor follow-up actions from 3.3.0 - read that!)
(minor follow-up actions from 3.3.0 - read that!)
Full Changelog: 3.3.0...3.3.8
The headline feature in 3.3.0 is AOT support .
The headline feature in 3.3.0 is AOT support.
Full Changelog: 3.2.56...3.3.0
[ProtoModel] partial class MyModel : TypeModel, seeded by [ProtoSerializable(typeof(...))];
the generator builds the serializers at compile time, so publishing native AOT works and cold start
improves even on an ordinary JIT build. The trigger attributes are [Experimental] (PBN9001)
while the shape settles. [ProtoSurrogate] on the model or assembly is the compile-time
SetSurrogate, and [ProtoContract(IsScalar = true)] lets a hand-written serializer state its
category where the generator cannot see its Featuresprotobuf-net.BuildTools package): installed by default, declined entirely with
<ProtoBufDisableBuildTools>true</ProtoBufDisableBuildTools>ISet<T> and IReadOnlySet<T> (ladeak)[ProtoPartialMember(..., OverwriteList = true)] was silently ignored; the option was read
from the member's own [ProtoMember], which is necessarily absent when the partial-member path
runs. It is now honoured, so such a member replaces rather than appends when deserializing into
an existing collection — a behaviour change for anyone who had set it and not noticed it doing
nothingStackOverflowException, which cannot be caught and was reachable from untrusted input; it now
throws a catchable InvalidOperationException naming both typesExtensible.AppendValue discarded the result of the underlying write and reported success
regardless, so a failure was silent data loss; it now throws if it cannot writeExtensible.AppendValue<T>/GetValue<T>/TryGetValue<T> now keep T rather than boxing to
object and re-resolving by reflection, so they work under native AOT at the default
DataFormat; other formats and the legacy object-based overload are unchangedNothing published for this version
improve logging etc in GetBuffer by @mgravell in #1218
Full Changelog: 3.2.55...3.2.56
Don't use [SkipLocalsInit] on ns2.* by @mgravell in #1216
Full Changelog: 3.2.52...3.2.55
fix(ImmutableArray serializer): Serializing uninitialized ImmutableArray throws NullReferenceException by @johncrim in #1183
Full Changelog: 3.2.46...3.2.52
Nothing published for this version
3.2.45 Compare # Choose a tag to compare
3.2.45
Compare
support DateOnly and TimeOnly (#1100 by @mgravell, fixes #977)
DateOnly and TimeOnly (#1100 by @mgravell, fixes #977)support IncludeInOutput on .proto additional files, to exclude from code-gen (#1032, #1046, #1047, #1062 by @kmosegaard and @dxdjgl)
IncludeInOutput on .proto additional files, to exclude from code-gen (#1032, #1046, #1047, #1062 by @kmosegaard and @dxdjgl)Uri in schema-generation as string (#1072 by @Matti-Koopa)Nothing published for this version
implement [NullWrappedCollection], usage as here
[NullWrappedCollection], usage as here (#1044)nint (IntPtr) and nuint (UIntPtr) with layout per long/ulong (#1043; fixes #1042, fixes grpc 282)fix bug with default values not including literal suffixes
IncludeInOutput for files generated by BuildTools (#1030)add support for deserializing into uninitialized IReadOnlyDictionary (#1022 by ladeak)
IReadOnlyDictionary<TKey, TValue> (#1022 by ladeak)[CompatibilityLevel] in code-gen (#1026)implement [NullWrappedValue] (compile-time annotation for ValueMember.SupportNull, see 3.1.26)
[NullWrappedValue] (compile-time annotation for ValueMember.SupportNull, see 3.1.26)[NullWrappedValue] support in schema tools in both directions (#1001 by DeagleGross)fix issue with comment-parsing in .proto schemas (#1010 / #1011)
Nothing published for this version
Nothing published for this version
reinstate ValueMember.SupportNull (from v2) for handling null values in lists
ValueMember.SupportNull (from v2) for handling null values in listsfix issue with non-supported features in tuple-types
MessageType and EnumType on FieldDescriptorProto (#971)DescriptorProto and EnumDescriptorProto (#974)fix schema parsing bug with semicolon-delimited options
fix protobuf-net.BuildTools usage with duplicate filenames
allow OverwriteList to work with properties declared as IEnumerable (as a special-case) even if the existing value is a non-null, non-clearable collec
OverwriteList to work with properties declared as IEnumerable<T> (as a special-case) even if the existing value is a non-null, non-clearable collectionenforce maximum model depth (TypeModel.MaxDepth) during serialize and deserialize
TypeModel.MaxDepth) during serialize and deserializesupport unknwon/extension fields on models that involve inheritance (via either Extensible or ITypedExtensible)
Extensible or ITypedExtensible)EnumPassthru is explicitly set to true (#881) from code compiled against v2Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
add .NET 5 TFM and support for related features such as record-types
protobuf-net.ServiceModel into a separate package to reduce the dependency tree for most usersadd new protobuf-net.NodaTime package that adds direct support for NodaTime primitives (note: this may be relocated to a NodaTime library)
IgnoreUnknownSubTypes API on [ProtoContract(...)] and MetaType; serializes the types it does understand, and silently ignores the unknown sub-typesNothing published for this version
Nothing published for this version
fix bug in SchemaGenerationOptions (inverted input/output)
SchemaGenerationOptions (inverted input/output)Nothing published for this version
add new SchemaGenerationOptions API for schema generation; this allows service generation
SchemaGenerationOptions API for schema generation; this allows service generationadd support for deserializing directly from ReadOnlySpan
ReadOnlySpan<byte>protobuf-net.AspNetCore package with input/output formatter supportreworked fix from 3.0.1 (same behavior, different implementation)
fix bug with pre-measured objects and non-root (gRPC #100)
<T> (gRPC #100)Nothing published for this version
Nothing published for this version
add support for full assembly metadata (#998 by mihaicodrean)
Nothing published for this version
- apply #603 to 2.4 branch - apply #611 to 2.4 branch
- Move TypeModel.Create (#609) - add ApplyFieldOffset API
mark DiscriminatedUnion* types as [Serializable]
DiscriminatedUnion* types as [Serializable]add IProtoInput / IProtoOutput APIs for discovering input/output capabilities (this is to allow testing for 3.0 features)
IProtoInput<T> / IProtoOutput<T> APIs for discovering input/output capabilities (this is to allow testing for 3.0 features)Nothing published for this version
fixes for .NET Core 3, thanks @szehetner
fix #442 - switched to 2.4.0 due to new versioning implementation breaking the assembly version; oops
Nothing published for this version
(#430/#431) - ensure build output from protobuf-net.MSBuild makes it into build output; add error codes
protobuf-net.MSBuild makes it into build output; add error codes$IntermediateOutputPath correctly from build toolsYour coding agent can read these notes before it upgrades. Set up the MCP server →