MessagePack implementation for Common Language Infrastructure / msgpack.org[C#]
Configuration | Status |
---|---|
Release | |
Debug (.NET Core 2.0) | |
Debug (.NET Core 2.0) | |
Debug (.NET Framework 4.x) | |
Debug (Code DOM)] | |
Debug (miscs)] | |
Debug (.NET Framework 3.5) | |
Debug (.NET Framework 3.5 Code DOM) |
This is MessagePack serialization/deserialization for CLI (Common Language Infrastructure) implementations such as .NET Framework, Silverlight, Mono (including Moonlight.) This library can be used from ALL CLS compliant languages such as C#, F#, Visual Basic, Iron Python, Iron Ruby, PowerShell, C++/CLI or so.
You can serialize/deserialize objects as following:
MessagePackSerializer.Get
generic method. This method creates dependent types serializers as well.Pack
method with destination Stream
and target object for serialization.Unpack
method with source Stream
.// Creates serializer.
var serializer = MessagePackSerializer.Get<T>();
// Pack obj to stream.
serializer.Pack(stream, obj);
// Unpack from stream.
var unpackedObject = serializer.Unpack(stream);
' Creates serializer.
Dim serializer = MessagePackSerializer.Get(Of T)()
' Pack obj to stream.
serializer.Pack(stream, obj)
' Unpack from stream.
Dim unpackedObject = serializer.Unpack(stream)
For production environment, you should instantiate own SerializationContext
and manage its lifetime. It is good idea to treat it as singleton because SerializationContext
is thread-safe.
Note: AOT support is limited yet. Use serializer pre-generation with mpu -s
utility or API.
If you do not pre-generated serializers, MsgPack for CLI uses reflection in AOT environments, it is slower and it sometimes causes AOT related error (ExecutionEngineException
for runtime JIT compilation). You also have to call MessagePackSerializer.PrepareType<T>
and companions in advance to avoid AOT related error. See wiki for details.
See wiki
bin
directory, binaries are there!net461
or net35
drops as you run with.unity3d
drop is suitable.Install Visual Studio 2017 (Community edition is OK) and 2015 (for MsgPack.Windows.sln).
<TargetFrameworks>
element in *.csproj
files to exclude platforms you want to exclude.Install latest .NET Core SDK.
Run with Visual Studio Developer Command Prompt:
msbuild MsgPack.sln /t:Restore msbuild MsgPack.sln
Or (for Unity 3D drops):
msbuild MsgPack.compats.sln /t:Restore
msbuild MsgPack.compats.sln
Or (for Windows Runtime/Phone drops and Silverlight 5 drops):
msbuild MsgPack.Windows.sln /t:Restore
msbuild MsgPack.Windows.sln
Or (for Xamarin unit testing, you must have Xamarin Business or upper license and Mac machine on the LAN to build on Windows):
msbuild MsgPack.Xamarin.sln /t:Restore
msbuild MsgPack.Xamarin.sln
Or open one of above solution files in your IDE and run build command in it.
msbuild
in latest Mono. Note that xbuild
does not work because it does not support latest csproj format.First of all, there are binary drops on github release page, you should use it to save your time.
Because we will not guarantee source code organization compatibilities, we might add/remove non-public types or members, which should break source code build.
If you want to import sources, you must include just only described on MsgPack.Unity3D.csproj.
If you want to use ".NET 2.0 Subset" settings, you must use just only described on MsgPack.Unity3D.CorLibOnly.csproj file, and define CORLIB_ONLY
compiler constants.
If you run on Windows, it is recommended to use HXM instead of Hyper-V based emulator.
You can disable Hyper-V from priviledged (administrator) powershell as follows:
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
If you want to use Hyper-V again (such as for Docker for Windows etc.), you can do it by following in priviledged (administrator) powershell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
You must create provisoning profiles in your MacOS devices.
See Xamarin documents about provisining for details.
There are bundle IDs of current iOS tests:
org.msgpack.msgpack-cli-xamarin-ios-test
org.msgpack.msgpack-cli-xamarin-ios-test-packer
org.msgpack.msgpack-cli-xamarin-ios-test-unpacker
org.msgpack.msgpack-cli-xamarin-ios-test-unpacking
org.msgpack.msgpack-cli-xamarin-ios-test-timestamp
org.msgpack.msgpack-cli-xamarin-ios-test-arrayserialization
org.msgpack.msgpack-cli-xamarin-ios-test-mapserialization
Note that some reflection based serializer tests failed with AOT related limitation.
See Xamarin's official trouble shooting docs first.
{region}-{lang}
as the first component of URL path such as https://developer.xamarin.com/ja-jp/guides/...
.This solution contains Silverlight5 and (old) UWP project for backward compability. They are required Visual Studio 2015 to build and test.
You can download Visual Studio 2015 community edition from here.
You do not have to install Visual Studio 2015 as long as you don't edit/test/build Silverlight and/or old UWP project.