首页 > 解决方案 > .net core ProtoBuf 上的序列化器在哪里?

问题描述

Protobuf在我的项目中使用Dotner Core 3.1并安装这个,但是当我编写这些代码行来序列化请求的对象时:

 public static byte[] ProtoSerialize<T>(T record) where T : class
    {
        try
        {
            using (var stream = new MemoryStream())
            {
                Serializer.Serialize(stream, record);
                return stream.ToArray();
            }
        }
        catch
        {
            throw;
        }
    }

Visual studio找不到相关的名称空间并得到找不到的错误Serializer

当前上下文中不存在名称“Serializer”

我对其进行测试.Net并安装相关的软件包,但.Net Core我得到了错误。有什么关系namespece?问题是什么?

标签: c#.net-coreprotobuf-net

解决方案


基本上,安装protobuf-net软件包。

protobuf-net.Core不是“.NET Core 上的 protobuf-net”——而是“protobuf-net 的核心部分”。protobuf-net依赖于protobuf-net.Core,无论您使用的是 .NET Framework、.NET Core、.NET 5+ 还是其他东西(在 .NET Standard 上)。

  • protobuf-net除了Serializer类之外,还包含所有运行时发出逻辑
  • protobuf-net.Core包含主要的读写器逻辑

在某些情况下,您不希望或不需要运行时发出片段,但在您的情况下:您这样做 - 所以只需将包依赖项更改为protobuf-net.

您针对哪个平台的问题由该软件包管理器处理 - 您无需担心。它将为您的平台安装正确的二进制文件。


推荐阅读