适用于C#的Google Protobuf 3.0.0程序集

时间:2015-08-17 11:55:29

标签: c# .net assemblies protocol-buffers protobuf-csharp-port

在我们的项目中,我们成功使用Google Protobuf for C ++。现在需要编译相同的* .proto文件以在C#代码中使用它。我下载了最近的Protobuf version 3.0.0-alpha-3。它为C#提供了proto2格式的支持,这对我来说已经足够了。我可以成功构建我的* .proto文件并获得* .cs文件。但是,当我将生成的* .cs文件添加到我的C#项目并尝试构建时,我收到类似这样的编译器错误:"The type or namespace name 'Google' could not be found in the global namespace (are you missing an assembly reference?)"这是发生错误的地方:

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: DiagramExport.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.ProtocolBuffers;
using pbc = global::Google.ProtocolBuffers.Collections;
using pbd = global::Google.ProtocolBuffers.Descriptors;

现在我在项目页面上的发布ZIP中找不到任何DLL等,我可以在C#项目中作为参考包含它。只有protoc.exe和一些* .proto文件。我的简单问题是:我从哪里获得这些装配?

(注意:我尝试按照README文件中的说明从源代码构建项目protobuf-csharp-3.0.0-alpha-3,但未能使用Visual Studio 2013 Update 4"开箱即用&#34 ;;我得到了许多编译器错误。)

2 个答案:

答案 0 :(得分:9)

在阅读thisthis文档页面后,我发现通过在程序包管理器控制台中执行以下命令,可以为我的项目安装Protocol Buffers NuGet包:

Install-Package Google.ProtocolBuffers

可以通过TOOLS在Visual Studio 2013中访问控制台 - > NuGet包管理器 - >包管理器控制台。经理下载了这个包,我的项目中有两个引用“Google.ProtocolBuffers”和“Google.ProtocolBuffers.Serialization”,这让编译器感到高兴。它现在完美无缺!

答案 1 :(得分:5)

查看发行说明here

C#(测试版)部分,您会发现:

Breaking: Preconditions is renamed to ProtoPreconditions
Breaking: GeneratedCodeInfo is renamed to GeneratedClrTypeInfo

因此,protoc.exe包附带的Grpc.Tools似乎会生成“旧”代码。我将protoc.exe替换为this,并重新编译(重新生成)修复问题的类。