PackageTrack
Sign in Get early access

protobuf-net

Provides simple access to fast and efficient "Protocol Buffers" serialization from .NET applications

3.4.14 262M downloads/mo #210 most downloaded on NuGet protobuf-net/protobuf-net

What this package is like to depend on

Last release 2 days ago

21 Aug 2026

Release timing varies

gaps range from 9 days to 13 months

Most releases are documented

notes for 50 of 74 stable releases

25 versions withdrawn

withdrawn after publishing

127 years old

105 releases · first in 1900

5 releases in the last 12 months

see the full history below

Release timeline

105 releases · Jan 1900 to Aug 2026
1901 1917 1933 1949 1965 1981 1997 2013
Release Pre-release Withdrawn

Releases

latest 60 of 105
  1. 3.4.14 21 Aug 2026
    Release notes

    Features:

    • Out-of-band sub-types for the AOT generator: [ProtoSubType] by @mgravell in #1317

    Maintenance

    New Contributors

    Full Changelog: 3.4.0...3.4.14

    Open source →
    Release notes

    3.4.14 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  2. 3.4.0 20 Aug 2026
    Release notes

    What's Changed

    The headline feature is experimental gRPC AOT support to accompany type-model AOT support.

    (features)

    • Build-time gRPC proxies and server bindings, hung off a declared partial (alternative to #1255) by @mgravell in #1282
    • PBN0022: don't nag about initializers that only restate the type's default by @mgravell in #1294
    • PBN0024 / PBN0025: declared defaults that do not do what they look like (re-target to main) by @mgravell in #1297
    • PBN0026: a declared default that SkipConstructor puts out of reach by @mgravell in #1301

    (background)

    • Pin the docs site config, and give it a favicon by @mgravell in #1289
    • Use the vector mark for the favicon by @mgravell in #1290
    • Document editions, and benchmark the delimited encoding it finally spells by @mgravell in #1292
    • Switching framing is only a wire break for other implementations by @mgravell in #1300
    • Split editions and delimited into two pages, and measure the skip cost by @mgravell in #1302
    • NodaTime: LocalDate and LocalTime reach the compile-time model too by @mgravell in #1303
    • Give each shipping package its own readme, and fix the package metadata by @mgravell in #1291
    • NodaTime surrogates are structs, like the well-known types they sit beside by @mgravell in #1304

    Full Changelog: 3.3.21...3.4.0

    Open source →
    Release notes

    3.4.0

    Compare

    Choose a tag to compare

    Open source →
  3. 3.3.21 17 Aug 2026
    Release notes

    What's Changed

    (CI etc)

    • Add-a-model fixer: resolve the namespace from RootNamespace first by @mgravell in #1266
    • Stop publishing protobuf-net.BuildTools (3.3.8 is final; deprecate it) by @mgravell in #1267
    • Move the docs and tool to protobuf-net.dev, and delete the old site projects by @mgravell in #1278
    • Point the URLs we ship at docs.protobuf-net.dev by @mgravell in #1279
    • Don't re-resolve object on every non-generic serialize (2.3 KB/call, ~40x) by @mgravell in #1280
    • Make protobuf-net.dev findable, and point release notes at GitHub releases by @mgravell in #1281
    • AOT diagnostics move to PBN3000+: they were colliding with the gRPC analyzers by @mgravell in #1283
    • Experimental APIs get a help link, and PBN9001 gets a page telling people how to opt in by @mgravell in #1284
    • CI: cache the NuGet package folder by @mgravell in #1288

    Full Changelog: 3.3.8...3.3.21

    Open source →
    Release notes

    3.3.21

    Compare

    Choose a tag to compare

    Open source →
  4. 3.3.8 11 Aug 2026
    Release notes

    (minor follow-up actions from 3.3.0 - read that!)

    What's Changed

    • Release via GitHub Releases: OIDC trusted publishing to nuget.org; retire AppVeyor/MyGet by @mgravell in #1258
    • Post-release: build tooling moves to protobuf-net.Core; NodaTime packaging; NuGet readme image by @mgravell in #1259
    • PBN0022 no longer fires for collection members by @mgravell in #1260
    • AOT migration UX: PBN2010's example compiles; the generated model is internal and namespaced by @mgravell in #1261
    • get-version scripts for the release flow by @mgravell in #1262
    • Accept bare release tags (3.3.5) as public releases, not just v-prefixed by @mgravell in #1263
    • AotDifferential: scan the configuration it was built as (unblocks the release workflow) by @mgravell in #1264
    • Release workflow: --skip-duplicate (singular) by @mgravell in #1265

    Full Changelog: 3.3.0...3.3.8

    Open source →
    Release notes

    3.3.8

    Compare

    Choose a tag to compare

    Open source →
  5. 3.3.0 11 Aug 2026
    Release notes

    What's Changed

    The headline feature in 3.3.0 is AOT support.

    • code-gen at build-time (AOT) by @mgravell in #1254
    • Allows the [Description] attribute annotation to be added to the code so that the annotation is carried when the proto file is generated by @whuanle in #1164
    • Allow custom measuring in user-defined serializers by @castorjavp in #1234
    • feat: allow ProtoPartialMember to be used on struct types by @adrianotr in #1225
    • Expose the Parent of descriptors by @Ju42 in #1235
    • Reinitialize the _knownLengths-Dictionary to free up its allocated memory by @michaelkollmann in #1245
    • Reduce allocations for large length-prefixed reads by @mgravell in #1253

    (maintenance)

    New Contributors

    Full Changelog: 3.2.56...3.3.0

    Open source →
    Release notes

    3.3.0

    Compare

    Choose a tag to compare

    Open source →
    Release notes
    • compile-time serializers, for native AOT and trimming (docs): opt in with [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 Features
    • the build tools now ship inside the protobuf-net package (analyzers and generators; previously the separate protobuf-net.BuildTools package): installed by default, declined entirely with <ProtoBufDisableBuildTools>true</ProtoBufDisableBuildTools>
    • support of deserializing ISet<T> and IReadOnlySet<T> (ladeak)
    • fix: [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 nothing
    • fix: merging two unrelated sub-types of one base (a payload carrying the same field twice with conflicting sub-type markers) recursed without bound and killed the process with a StackOverflowException, which cannot be caught and was reachable from untrusted input; it now throws a catchable InvalidOperationException naming both types
    • fix: Extensible.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 write
    • Extensible.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 unchanged
    Open source →
  6. 3.3.0-g6785ecbb35 01 Jan 1900 pre-release withdrawn

    Nothing published for this version

  7. 3.2.56 31 Jul 2025
    Release notes

    What's Changed

    Full Changelog: 3.2.55...3.2.56

    Open source →
    Release notes

    3.2.56

    Compare

    Choose a tag to compare

    Open source →
  8. 3.2.55 27 Jul 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 3.2.52...3.2.55

    Open source →
    Release notes

    3.2.55

    Compare

    Choose a tag to compare

    Open source →
  9. 3.2.52 11 Apr 2025
    Release notes

    What's Changed

    • fix(ImmutableArray serializer): Serializing uninitialized ImmutableArray throws NullReferenceException by @johncrim in #1183
    • Cleanup package dependencies by @pentp in #1195
    • Propose HybridCache service extensions by @mgravell in #1197
    • rev aux libs by @mgravell in #1206

    New Contributors

    Full Changelog: 3.2.46...3.2.52

    Open source →
    Release notes

    3.2.52

    Compare

    Choose a tag to compare

    Open source →
  10. 3.2.46 24 Jan 2025

    Nothing published for this version

  11. 3.2.45 23 Oct 2024
    Release notes

    3.2.45

    Compare

    Choose a tag to compare

    Open source →
  12. 3.2.30 27 Sep 2023
    Release notes
    • support DateOnly and TimeOnly (#1100 by @mgravell, fixes #977)
    • support Roslyn [DefaultValue] analyzer (#1040 by @deaglegross)
    Open source →
  13. 3.2.26 25 May 2023
    Release notes
    • support IncludeInOutput on .proto additional files, to exclude from code-gen (#1032, #1046, #1047, #1062 by @kmosegaard and @dxdjgl)
    • support Uri in schema-generation as string (#1072 by @Matti-Koopa)
    Open source →
  14. 3.2.26-gbb5bfa8027 01 Jan 1900 pre-release withdrawn

    Nothing published for this version

  15. 3.2.16 17 Mar 2023
    Release notes
    • implement [NullWrappedCollection], usage as here (#1044)
    • support nint (IntPtr) and nuint (UIntPtr) with layout per long/ulong (#1043; fixes #1042, fixes grpc 282)
    Open source →
  16. 3.2.12 04 Mar 2023
    Release notes
    • fix bug with default values not including literal suffixes (#1037)
    • fix SDKs used by BuildTools[.Legacy]
    • expose IncludeInOutput for files generated by BuildTools (#1030)
    Open source →
  17. 3.2.8 27 Feb 2023
    Release notes
    • add support for deserializing into uninitialized IReadOnlyDictionary<TKey, TValue> (#1022 by ladeak)
    • fix missing namespace in [CompatibilityLevel] in code-gen (#1026)
    Open source →
  18. 3.2.0 20 Feb 2023
    Release notes
    • implement [NullWrappedValue] (compile-time annotation for ValueMember.SupportNull, see 3.1.26)
    • add [NullWrappedValue] support in schema tools in both directions (#1001 by DeagleGross)
    • allow nullable primitives for optional values (#856 by dxdjgl, #855, #1016)
    • update dependencies
    • drop netcoreapp3.1 (still supported indirectly via netstandard2.1)
    • (build) switch to central package management
    Open source →
  19. 3.1.33 30 Jan 2023
    Release notes
    • fix issue with comment-parsing in .proto schemas (#1010 / #1011)
    Open source →
  20. 3.1.33-gf6a8d8dfc2 01 Jan 1900 pre-release withdrawn

    Nothing published for this version

  21. 3.1.31-g739615ac23 01 Jan 1900 pre-release withdrawn

    Nothing published for this version

  22. 3.1.26 16 Dec 2022
    Release notes
    • reinstate ValueMember.SupportNull (from v2) for handling null values in lists
    Open source →
  23. 3.1.25 09 Nov 2022
    Release notes
    • fix issue with non-supported features in tuple-types (#964)
    • add MessageType and EnumType on FieldDescriptorProto (#971)
    • expose fully qualified name for DescriptorProto and EnumDescriptorProto (#974)
    Open source →
  24. 3.1.22 21 Sep 2022
    Release notes
    • fix schema parsing bug with semicolon-delimited options (#833)
    • fix schema parsing bug with escape characters in custom options (#931 / #933)
    • fix ProtoSyntax type-forwarding (#953)
    • update TFMs (#946)
    Open source →
  25. 3.1.17 26 Jun 2022
    Release notes
    • add .NET 6 TFM for protogen (#928)
    • fix protobuf-net.BuildTools usage with duplicate filenames (#925)
    • fix protobuf-net.BuildTools issue with gRPC/WCF detection not working correctly
    Open source →
  26. 3.1.4 10 May 2022
    Release notes
    • allow OverwriteList to work with properties declared as IEnumerable<T> (as a special-case) even if the existing value is a non-null, non-clearable collection
    Open source →
  27. 3.1.0 22 Apr 2022
    Release notes
    • enforce maximum model depth (TypeModel.MaxDepth) during serialize and deserialize
    Open source →
  28. 3.0.131 22 Apr 2022
    Release notes
    • support unknwon/extension fields on models that involve inheritance (via either Extensible or ITypedExtensible)
    • detect Google.Protobuf types and provide guidance (#722)
    • don't throw if EnumPassthru is explicitly set to true (#881) from code compiled against v2
    • fix #479 (also backported as 2.4.7)
    Open source →
  29. 3.0.125 01 Jan 1900 withdrawn

    Nothing published for this version

  30. 3.0.101 19 Mar 2021

    Nothing published for this version

  31. 3.0.73 02 Dec 2020

    Nothing published for this version

  32. 3.0.72 02 Dec 2020

    Nothing published for this version

  33. 3.0.62 13 Nov 2020
    Release notes
    • add .NET 5 TFM and support for related features such as record-types
    • split protobuf-net.ServiceModel into a separate package to reduce the dependency tree for most users
    • fix .proto schema generation when an enum name is overridden
    • attempt to declare dynamically-accessed members for linker compatibility
    • fix init-only fields in IL-generation
    Open source →
  34. 3.0.52 03 Oct 2020
    Release notes
    • add new protobuf-net.NodaTime package that adds direct support for NodaTime primitives (note: this may be relocated to a NodaTime library)
    • fix #700 - new APIs to allow surrogates to be defined externally, and to be implemented over primitive backing types
    • fix #703 - new options on MSBuild targets (via Konstantin Sharon)
    • fix #693 - new IgnoreUnknownSubTypes API on [ProtoContract(...)] and MetaType; serializes the types it does understand, and silently ignores the unknown sub-types
    • fix #695 - JIT error when serialization callbacks declared at types other than the inheritance root
    • fix #713 - work correctly with arrays (etc) of nullable enum types
    • fix #697 - improve error reporting for invalid end-group markers
    • fix #668 - additional non-generic APIs
    • fix problem with protogen website not allowing imports
    Open source →
  35. 3.0.29 08 Jul 2020

    Nothing published for this version

  36. 3.0.27 06 Jul 2020

    Nothing published for this version

  37. 3.0.24 06 Jul 2020
    Release notes
    • fix bug in SchemaGenerationOptions (inverted input/output)
    Open source →
  38. 3.0.21 05 Jul 2020

    Nothing published for this version

  39. 3.0.18 05 Jul 2020
    Release notes
    • add new SchemaGenerationOptions API for schema generation; this allows service generation
    • tweaks to reflection services for gRPC (#617 via mholo65)
    Open source →
  40. 3.0.13 02 Jul 2020
    Release notes
    • add support for deserializing directly from ReadOnlySpan<byte>
    • allow using open generic surrogates (#446 via ocoanet)
    • add netcoreapp3.1 target (#670 via iamcarbon)
    • add new protobuf-net.AspNetCore package with input/output formatter support
    Open source →
  41. 3.0.2 24 Jun 2020
    Release notes
    • reworked fix from 3.0.1 (same behavior, different implementation)
    Open source →
  42. 3.0.1 01 Jan 1900 withdrawn
    Release notes
    • fix bug with pre-measured objects and non-root <T> (gRPC #100)
    Open source →
  43. 3.0.0 09 Jun 2020

    Nothing published for this version

  44. 2.4.9 10 Feb 2025

    Nothing published for this version

  45. 2.4.8 09 Jan 2023
    Release notes
    • add support for full assembly metadata (#998 by mihaicodrean)
    Open source →
  46. 2.4.7 22 Apr 2022

    Nothing published for this version

  47. 2.4.6 28 Jan 2020
    Release notes
    • apply #603 to 2.4 branch
    • apply #611 to 2.4 branch
    Open source →
  48. 2.4.5 01 Jan 1900 withdrawn
    Release notes
    • Move TypeModel.Create (#609)
    • add ApplyFieldOffset API (#608)
    Open source →
  49. 2.4.4 29 Oct 2019
    Release notes
    • mark DiscriminatedUnion* types as [Serializable]
    Open source →
  50. 2.4.3 01 Jan 1900 withdrawn
    Release notes
    • add IProtoInput<T> / IProtoOutput<T> APIs for discovering input/output capabilities (this is to allow testing for 3.0 features)
    Open source →
  51. 2.4.2 01 Jan 1900 withdrawn

    Nothing published for this version

  52. 2.4.1 09 Oct 2019
    Release notes
    • fixes for .NET Core 3, thanks @szehetner
    • (this build deliberately does not update package dependencies, to reduce impact)
    Open source →
  53. 2.4.0 30 Aug 2018
    Release notes
    • fix #442 - switched to 2.4.0 due to new versioning implementation breaking the assembly version; oops
    Open source →
  54. 2.3.18 01 Jan 1900 withdrawn

    Nothing published for this version

  55. 2.3.17 03 Aug 2018
    Release notes
    • (#430/#431) - ensure build output from protobuf-net.MSBuild makes it into build output; add error codes
    • #429 - use $IntermediateOutputPath correctly from build tools
    Open source →
  56. 2.3.16 02 Aug 2018
    Release notes
    • new MSBuild .proto tools added (huge thanks go to Mark Pflug here)
    • fix error where extension GetValues might only report the last item
    • switch to git-based versioning implementation; versioning now unified over all tools
    • extensions codegen (C#): add Get* and Add* implementations for repeated; add Set* implementations for regular
    • update protoc to 3.6.1
    • give advance warning of possible removal of ProtoReader/ProtoWriter constructors
    • codegen (C#): implement "listset" option to control whether lists/maps get set accessors
    • GetProto<T> now emits oneof-style .proto syntax for inheritance
    Open source →
  57. 2.3.15 30 Jul 2018
    Release notes
    • merge #412/fix #408 - ReadObject/WriteObject failed on value types
    • merge #421 - support IReadOnlyCollection members
    • merge #424 - make WCF configuration features available on TFMs that support them
    • merge #396 - remove unnecessary #if defs
    Open source →
  58. 2.3.14 24 Jul 2018
    Release notes
    • add UAP TFM
    Open source →
  59. 2.3.14-alpha1 27 Jun 2018 pre-release

    Nothing published for this version

  60. 2.3.13 19 Jun 2018
    Release notes
    • IMPORTANT fix #403 - key cache was incorrect in some cases involving multi-level inheritance; update from 2.3.8 or above is highly recommended
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive