.net core ProtoBuf 上的 Serializer 在哪里?

Where is Serializer on .net core ProtoBuf?

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

 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 找不到相关名称 space 并收到错误消息,找不到 Serializer

The name 'Serializer' does not exist in the current context

我在 .Net 上测试它并安装了相关的包,但在 .Net Core 上我遇到了错误。 什么是相关的 namespece ?有什么问题?

基本上,安装 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 class
  • protobuf-net.Core 包含主要的 reader/writer 逻辑

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

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