获取预期的顶级语句(例如“消息”)。同时将 proto 转换为 C#

max*_*pan 5 c# protocol-buffers protobuf-net

我有一个名为 Person.proto 的简单原型文件,其中包含以下内容。我不明白我错过了什么。

syntax = "proto2";

message Person{
optional string name = 1;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的命令是

Protoc Person.proto --csharp_out=C:\Users\Owner\.nuget\packages\google.protocolbuffers\2.4.1.555\tools Person.cs
Run Code Online (Sandbox Code Playgroud)

人物.cs

public class Person
{

}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 0

您到底使用什么工具版本?如果不需要“syntax”关键字,则表明工具版本非常旧。也许尝试更新?然而,目前的Google工具仅支持“proto3”语法。就您而言,这仅意味着将“proto2”更改为“proto3”并删除“可选”。您还可以尝试我的在线工具,它为 Google 工具 (protoc) 和 protobuf-net 工具 (protogen) 提供支持 - 请参阅https://protogen.marcgravell.com的下拉菜单

与 protoc 不同,protogen 支持“proto2”和“proto3”语法。页面上有有关如何在本地访问这些工具的链接。