1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-MessagePack-CSharp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
msbuildtask.md 3.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:31 8acacc8

Компилятор MessagePack через задачу MSBuild

Производительность холодного старта и среды AOT можно улучшить, предварительно скомпилировав специализированный код для сериализации и десериализации пользовательских типов.

Установите в свой проект пакет NuGet MessagePack.MSBuild.Tasks: NuGet

Этот пакет автоматически запускает компилятор MessagePack (mpc) во время сборки для создания исходного файла в промежуточном каталоге и добавляет его к компиляции, которую можно использовать обычным способом:

using System;
using MessagePack;
using MessagePack.Resolvers;

class Program
{
    static void Main(string[] args)
    {
        var o = new SomeObject { SomeMember = "hi" };

        var options = MessagePackSerializerOptions.Standard.WithResolver(
            CompositeResolver.Create(
                GeneratedResolver.Instance,
                StandardResolver.Instance
            ));
        byte[] b = MessagePackSerializer.Serialize(o, options);
        var o2 = MessagePackSerializer.Deserialize<SomeObject>(b, options);
        Console.WriteLine(o2.SomeMember);
    }
}

[MessagePackObject]
public class SomeObject
{
    [Key(0)]
    public string SomeMember { get; set; }
}

Настройки

В вашем проекте можно установить несколько свойств MSBuild для настройки mpc:

Свойство Назначение Значение по умолчанию
MessagePackGeneratedResolverNamespace Префикс пространства имён, под которым будет генерироваться код. К этому значению всегда добавляется .Formatters. MessagePack
MessagePackGeneratedResolverName Имя сгенерированного типа. GeneratedResolver
MessagePackGeneratedUsesMapMode Логическое значение, указывающее, должны ли все форматеры использовать карты свойств вместо более компактных массивов. false

Например, вы можете добавить этот xml в файл проекта, чтобы установить каждое из указанных выше свойств (в этом примере — на их значения по умолчанию):

<PropertyGroup>
 <MessagePackGeneratedResolverNamespace>MessagePack</MessagePackGeneratedResolverNamespace>
 <MessagePackGeneratedResolverName>GeneratedResolver</MessagePackGeneratedResolverName>
 <MessagePackGeneratedUsesMapMode>false</MessagePackGeneratedUsesMapMode>
</PropertyGroup>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-MessagePack-CSharp.git
git@api.gitlife.ru:oschina-mirror/mirrors-MessagePack-CSharp.git
oschina-mirror
mirrors-MessagePack-CSharp
mirrors-MessagePack-CSharp
master