5
Visual Studio 2015 
C#
NuGet Packages : 
Google.Protobuf v3.0.0 
Google.Protobuf.Tools v3.0.0

消息类型Quake

syntax = "proto3";
import "google/protobuf/timestamp.proto";
message Quake {
  google.protobuf.Timestamp _timestamp = 1;
  double magnitude = 2;
}

timestamp.proto包含在同一文件夹中

protoc 3.0.2命令行编译成功

但是 VS 右键单击​​ proto 文件并选择“运行自定义工具”失败,并出现错误“自定义工具 'ProtoBufTool' 失败。”

从 Visual Studio 中生成 C# 类?

4

2 回答 2

4

Protobuf 文档在解释如何执行 protoc.exe 时似乎很短(弱)。这是我在编写的一个小型测试项目中的做法。我为我的 Protobuf 项目安装了两个 NuGet 包:

Google.Protobuf (C# runtime library for Protocol Buffers)
Google.Protobuf.Tools (protoc.exe)

在 Visual Studio 中,我定义了一个 Pre-build 事件命令行。这是在项目的属性菜单中定义的:

..\..\..\packages\Google.Protobuf.Tools.3.6.0\tools\windows_x64\protoc -I="$(ProjectDir)."
    --csharp_out=$(ProjectDir)Model $(ProjectDir)MyOwn.proto

生成的 MyOwn.cs 文件位于子目录“Model”中。它必须手动包含在项目中,才能自动编译。这就是我今天的做法。我希望这可以帮助别人。

于 2018-07-05T11:17:03.653 回答
-1

导入时间戳并使用完整的命名空间:

syntax = "proto3";
import "google/protobuf/timestamp.proto";

message Quake {
  google.protobuf.Timestamp _timestamp = 1;
  double magnitude = 2;
}

要生成 C# 代码,请参阅他们的手册: https ://developers.google.com/protocol-buffers/docs/csharptutorial#compiling-your-protocol-buffers

于 2016-09-20T22:49:07.117 回答