.net core ProtoBuf 上的 Serializer 在哪里?

pej*_*man 6 c# protobuf-net .net-core

我在我的项目中使用ProtobufDotner 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mar*_*ell 11

基本上,安装protobuf-net包。

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

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

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

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