NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #1505 most downloaded on NuGet
ProtoBuf DSL (proto2 / proto3) and descriptor tools for protobuf-net
Last release 22 days ago
16 Sep 2026
Ships unpredictably
gaps range from 9 days to 1.9 years
Most releases are documented
notes for 27 of 36 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
37 releases · first in 2017
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 unchangedfix(ImmutableArray serializer): Serializing uninitialized ImmutableArray throws NullReferenceException by @johncrim in #1183
Full Changelog: 3.2.46...3.2.52
Nothing published for this version
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)
fix 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
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
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 toolsnew MSBuild .proto tools added (huge thanks go to Mark Pflug here)
Get* and Add* implementations for repeated; add Set* implementations for regularprotoc to 3.6.1set accessorsGetProto<T> now emits oneof-style .proto syntax for inheritancefix error in generated C# when using enums in discriminated unions
move default .proto imports (from v1.0.7) to embedded resources that work for all consumers
add #393 - optional ability to emit enums for oneof similar to Google's C# generator
oneof similar to Google's C# generatorpackaging updates (no code changes)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →