SetNet.Protobuf
1.1.0
dotnet add package SetNet.Protobuf --version 1.1.0
NuGet\Install-Package SetNet.Protobuf -Version 1.1.0
<PackageReference Include="SetNet.Protobuf" Version="1.1.0" />
<PackageVersion Include="SetNet.Protobuf" Version="1.1.0" />
<PackageReference Include="SetNet.Protobuf" />
paket add SetNet.Protobuf --version 1.1.0
#r "nuget: SetNet.Protobuf, 1.1.0"
#:package SetNet.Protobuf@1.1.0
#addin nuget:?package=SetNet.Protobuf&version=1.1.0
#tool nuget:?package=SetNet.Protobuf&version=1.1.0
<p align="center"> <img src="https://raw.githubusercontent.com/Povstalez/SetNet/master/assets/icon.png" alt="SetNet" width="96"> </p>
SetNet.Protobuf
protobuf-net serializer for SetNet.
SetNet ships no serializer in the core — you register one at startup. This package plugs in protobuf-net (Protocol Buffers). It produces compact binary payloads, but the real reason to pick it is cross-language interop: a SetNet server can exchange messages with non-.NET clients (Go, C++, JavaScript, Python, …) that speak protobuf, as long as both sides share the same field-numbered contract. If everything is .NET, MemoryPack or MessagePack are usually faster.
Install
dotnet add package SetNet
dotnet add package SetNet.Protobuf
Usage
Register the serializer once at startup, before you create any client or server. Both ends of a connection must use the same serializer.
using SetNet.Protobuf;
using SetNet.Messaging;
SetNetSerializer.Use(new ProtobufNetSerializer());
Annotate each message type with [ProtoContract] and give every serialized member a stable [ProtoMember(n)] tag:
using ProtoBuf;
[ProtoContract]
public class ChatMessage
{
[ProtoMember(1)] public string User { get; set; } = "";
[ProtoMember(2)] public string Text { get; set; } = "";
}
Serialize<T> writes to a MemoryStream via ProtoBuf.Serializer.Serialize; Deserialize<T> reads it back with ProtoBuf.Serializer.Deserialize<T>.
Notes
- Field numbers are the contract. The
nin[ProtoMember(n)]— not the property name — identifies a field on the wire. Keep tags stable across versions; you can add new tags for forward/backward compatibility, but don't reuse or renumber existing ones. - Cross-language: the payload is standard Protocol Buffers, so a matching
.proto/schema on the other side lets non-.NET clients interop. (Both ends still must agree on field numbers and types.) - Size & speed: compact and fast — smaller than JSON; typically a bit slower and larger than MemoryPack for pure-.NET workloads.
- AOT / IL2CPP (Unity): protobuf-net uses runtime metadata/codegen, which can need extra care under IL2CPP/aggressive trimming. For Unity, SetNet.MemoryPack is the more AOT-robust default unless you specifically need protobuf interop.
- Depends on
protobuf-net(3.2.30).
Documentation & source
- 🐙 https://github.com/Povstalez/SetNet — full module catalog in docs/MODULES.md
License
MIT
| 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 | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | 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.1
- protobuf-net (>= 3.2.30)
- SetNet (>= 1.1.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.1.0 | 131 | 7/2/2026 |