Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于C的Google Protobuf 3.0.0程序集# 我们在谷歌C++中成功地使用了ProtoBuf。现在需要编译相同的*.proto文件,以便在C#代码中使用它。我下载了最近的。它为C#提供proto2格式的支持,这对我来说已经足够了。我可以成功构建*.proto文件并获得*.cs文件。但是,当我将生成的*.cs文件添加到我的C#项目并尝试构建时,我会收到如下编译器错误:“在全局命名空间中找不到类型或命名空间名称“Google”(是否缺少程序集引用?)”这是发生错误的地方: // 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;_C#_.net_Assemblies_Protocol Buffers_Protobuf Csharp Port - Fatal编程技术网

用于C的Google Protobuf 3.0.0程序集# 我们在谷歌C++中成功地使用了ProtoBuf。现在需要编译相同的*.proto文件,以便在C#代码中使用它。我下载了最近的。它为C#提供proto2格式的支持,这对我来说已经足够了。我可以成功构建*.proto文件并获得*.cs文件。但是,当我将生成的*.cs文件添加到我的C#项目并尝试构建时,我会收到如下编译器错误:“在全局命名空间中找不到类型或命名空间名称“Google”(是否缺少程序集引用?)”这是发生错误的地方: // 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;

用于C的Google Protobuf 3.0.0程序集# 我们在谷歌C++中成功地使用了ProtoBuf。现在需要编译相同的*.proto文件,以便在C#代码中使用它。我下载了最近的。它为C#提供proto2格式的支持,这对我来说已经足够了。我可以成功构建*.proto文件并获得*.cs文件。但是,当我将生成的*.cs文件添加到我的C#项目并尝试构建时,我会收到如下编译器错误:“在全局命名空间中找不到类型或命名空间名称“Google”(是否缺少程序集引用?)”这是发生错误的地方: // 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;,c#,.net,assemblies,protocol-buffers,protobuf-csharp-port,C#,.net,Assemblies,Protocol Buffers,Protobuf Csharp Port,现在我在项目页面的发布ZIP中找不到任何DLL等,我可以在我的C#项目中作为参考。只有protoc.exe和一些*.proto文件存在。我的简单问题是:从哪里获得这些程序集? (备注:我试图按照自述文件中的说明从源代码构建项目,但使用Visual Studio 2013 Update 4“开箱即用”构建失败;我遇到了一些编译器错误。)阅读和文档页面后,我发现可以通过在package Manager控制台中执行以下命令来为我的项目安装Protocol Buffers NuGet软件包: Insta

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

(备注:我试图按照自述文件中的说明从源代码构建项目,但使用Visual Studio 2013 Update 4“开箱即用”构建失败;我遇到了一些编译器错误。)

阅读和文档页面后,我发现可以通过在package Manager控制台中执行以下命令来为我的项目安装Protocol Buffers NuGet软件包:

Install-Package Google.ProtocolBuffers

在Visual Studio 2013中,可以通过工具-->NuGet Package Manager-->包管理器控制台访问该控制台。经理下载了这个包,我在项目中得到了两个参考“Google.ProtocolBuffers”和“Google.ProtocolBuffers.Serialization”,这让编译器很高兴。它现在工作得很好

看看发行说明

C#(Beta)部分,您将发现:

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

因此,
Grpc.Tools
包附带的
protoc.exe
似乎会生成“旧”代码。我用一个替换了
protoc.exe
,并重新编译(重新生成)了我的类,解决了这个问题。

我不知道您试图使用的库是什么,但我想从它开始。@Sinatr据我所知,我尝试使用谷歌的“官方”发行版。至少,谷歌网站上的文档指向这个项目(见)我不想使用ProtoBF.NET,因为我们已经使用了Proto.EXE编译了C++和java的*.Proto文件。谷歌与.NET无关。因此,有人必须做一个肮脏的任务,将包装器移植到C++库或源代码中。我在链接页面上没有看到
c
。只需使用C代码中的protobuf.net即可。@Sinatr:你错了。谷歌已经将Jon Skeet的Protobuf C#实现应用到官方Protobuf Github存储库中。Marc的实现在历史上更受欢迎,但Jon的实现更类似于Google的Java实现。(乔恩是谷歌的雇员,等等。)@KentonVarda,我要重复一遍,谷歌与.Net(微软制作并支持)没有任何关系。他们可以(理论上,总有一天)增加c#支持,但他们不必,这是我的观点。我知道protobuf有很多实现,但我们讨论的是一个您希望在生产中使用的实现,对吗?你看过你链接的那页了吗?旁白:讽刺的是,我用谷歌查找protobuf.net,但我没能很快找到Jon的,所以我只是编辑了评论,只留下protobuf.net链接。仅供参考,有一点更新:谷歌协议缓冲区C#3.0.0-beta2也可以
安装包google.protobuf-Pre