首页 > 解决方案 > 获得预期的顶级语句(例如“消息”)。同时将 proto 转换为 C#

问题描述

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

syntax = "proto2";

message Person{
optional string name = 1;
}

我正在使用的命令是

Protoc Person.proto --csharp_out=C:\Users\Owner\.nuget\packages\google.protocolbuffers\2.4.1.555\tools Person.cs

个人.cs

public class Person
{

}

标签: c#protocol-buffersprotobuf-net

解决方案


您在那里使用的究竟是什么工具版本?如果不期望“语法”关键字,则表明工具版本非常旧。也许尝试更新?但是,当前的 Google 工具仅支持“proto3”语法。在您的情况下,这仅意味着将“proto2”更改为“proto3”并删除“可选”。您还可以尝试我的在线工具,它同时支持 Google 工具 (protoc) 和 protobuf-net 工具 (protogen) - 请参阅https://protogen.marcgravell.com的下拉菜单

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


推荐阅读