SetNet.MemoryPack
1.1.0
dotnet add package SetNet.MemoryPack --version 1.1.0
NuGet\Install-Package SetNet.MemoryPack -Version 1.1.0
<PackageReference Include="SetNet.MemoryPack" Version="1.1.0" />
<PackageVersion Include="SetNet.MemoryPack" Version="1.1.0" />
<PackageReference Include="SetNet.MemoryPack" />
paket add SetNet.MemoryPack --version 1.1.0
#r "nuget: SetNet.MemoryPack, 1.1.0"
#:package SetNet.MemoryPack@1.1.0
#addin nuget:?package=SetNet.MemoryPack&version=1.1.0
#tool nuget:?package=SetNet.MemoryPack&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.MemoryPack
MemoryPack serializer for SetNet.
SetNet ships no serializer in the core — you register one at startup. This package plugs in MemoryPack, an extremely fast, zero-encoding, source-generated binary serializer with no runtime reflection. Because all (de)serialization code is generated at compile time, it's AOT/IL2CPP-friendly, making it a strong default for Unity and other trimmed/AOT targets — often faster and more AOT-robust than MessagePack.
Install
dotnet add package SetNet
dotnet add package SetNet.MemoryPack
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.MemoryPack;
using SetNet.Messaging;
SetNetSerializer.Use(new MemoryPackNetSerializer());
Annotate every message type with [MemoryPackable] and make the type partial (the source generator emits the serialization code into the other half of the partial):
using MemoryPack;
[MemoryPackable]
public partial class ChatMessage
{
public string User { get; set; } = "";
public string Text { get; set; } = "";
}
That's all — Serialize<T> calls MemoryPackSerializer.Serialize and Deserialize<T> calls MemoryPackSerializer.Deserialize<T>.
Notes
[MemoryPackable] partialis required. A non-partial type, or one missing the attribute, won't have generated code and will fail to serialize. This applies to nested/member types too.- Speed & size: among the SetNet serializers this is typically the fastest with the smallest allocations; payloads are compact binary (much smaller than JSON).
- AOT / IL2CPP (Unity): source-generated, no runtime reflection or dynamic codegen — the most AOT-robust option here. See the MemoryPack docs for Unity setup and version alignment of the generator.
- Interop: MemoryPack's wire format is .NET-specific and not a cross-language standard. If you need to talk to Go/C++/JS clients, use SetNet.Protobuf instead.
- Already compact, so SetNet.Compression usually adds little for small messages (its raw-fallback keeps it a no-op there) — it can still help on large state blobs.
- Depends on
MemoryPack(1.21.1).
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
- MemoryPack (>= 1.21.1)
- 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 | 140 | 7/2/2026 |