Компилятор MessagePack через задачу MSBuild
Производительность холодного старта и среды AOT можно улучшить, предварительно скомпилировав специализированный код для сериализации и десериализации пользовательских типов.
Установите в свой проект пакет NuGet MessagePack.MSBuild.Tasks
:
Этот пакет автоматически запускает компилятор 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 )