问题标签 [protogen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1056 浏览

c# - 使用 protogen 为每个文件输出一个 C# 类?

是否可以基于单个 .proto 文件让 protogen 输出多个文件(每个类一个)?

我正在使用一个非常大的 .proto 文件,该文件输出大约 200 个类,目前都在一个文件中。我需要使用生成的类的地方之一是内存高度受限的环境(Windows Phone 后台代理)。

我希望能够在受约束的环境中加载的程序集中只包含必要的类,但是当生成的类都在一个文件中时不能轻易做到这一点。如果我可以将它们输出到多个文件,我只能链接到我在程序集中需要的受约束环境的文件。

有没有办法让 protogen 在单独的文件中输出类?我看不到此选项,目前仅使用该umbrella-classname选项。

手动编辑生成的文件不是一种选择,所以如果 protogen 不能这样做,是否有另一个可用的命令行工具可以拆分包含多个类的文件?(为了避免重新发明轮子。)

更新
我正在使用Google.ProtocolBuffers.dll继承的决定并且不容易改变。
编辑/拆分 .proto 文件也不可行。(除非作为自定义步骤。)

0 投票
1 回答
625 浏览

protobuf-net - Protobuf-net Protogen 为 int32 生成 DataFormat.TwosComplement

我正在使用 protobuf-net r580 中包含的 Protogen 来编译以下 .proto 文件:

而且我发现生成的代码使用 TwosComplement 线格式很奇怪:

而不是更优化的默认 varint 类型。这是预期的行为吗?

0 投票
2 回答
7982 浏览

c# - protobuf-net - 从 .proto 生成的类 - 重复字段是否应该是只读的,没有设置器?

我对此完全感到困惑。我环顾四周,似乎找不到直接的答案。我有一个 .proto 文件,我的项目(全部是 java)用来创建一些消息。

有一个重复的信息字段。这是我们创建的一种类型。当我使用 protogen 生成 C# 类时,该字段显示为只读且没有设置器。

如果没有此参数,我无法完全构建消息。所以我的问题是。是否应该像这样生成重复字段并且我应该以其他方式访问这个只读列表?或者这是生成器中的错误?

生成的代码:

原型文件部分:

我可能只是错过了一些非常明显的东西。谢谢你的帮助!

0 投票
1 回答
556 浏览

c# - 使用 protobuf-net 生成器制作 PCL 友好的 C# 类

我想在 Xamarin 应用程序中使用协议缓冲区,因此我需要使用 PCL 项目来容纳我的非平台特定代码。

我使用 protobuf-net protogen 将 .proto 文件转换为 .cs 文件,但它与 PCL 项目不兼容。使其兼容就像从文件中删除每个 global::System.Serializable 属性一样简单,但我想知道是否有办法让 protogen 不将这些属性放入生成的文件中。

如果我要 a) 找到一种自动构建 .proto 类的方法,b) 定期更改许多消息类型中的一些,或者 c) 将项目交给不理解的人,这将非常有帮助问题。

0 投票
1 回答
642 浏览

protobuf-net - protobuf-net protogen 从 proto 文件生成 c# 类和对应的接口

我正在尝试为我的应用程序编写单元测试,并希望我的原型类实现接口。最好将它们与 c# 类一起生成,但我找不到这样做的方法。有办法吗?

0 投票
1 回答
222 浏览

vb.net - 如何从 ProtoGen.exe 生成 .vb 文件

请问 ProtoGen.exe 中是否有生成 .vb 文件的开关?

首先生成 .cs 文件然后进行代码转换非常繁琐......

谢谢!

0 投票
1 回答
1994 浏览

java - Protogen 对比 协议编译器选项

我有一些 .proto 文件用于从 Java、C++ 和 C# 编译类。对于 Java 和 C++,我使用 Protoc 编译器,对于 C#,我使用 Protogen。Java/C++ 类创建的脚本是

对于 C# 类生成我有

两个脚本都引用了 .proto 文件(当然 ;])。我添加了上面的 C# 脚本-p:detectMissing,以生成允许我测试是否指定字段的属性;该选项*Specified为所有字段创建IsRequired = false

我的问题很简单,我想确保 C#、C++ 和 Java 类保持一致,但是对于 C#,我需要使用-p:detectMissingProtogen 选项,使用 Protoc 的等效选项是什么?

谢谢你的时间。

0 投票
2 回答
895 浏览

c# - ProtoGen.exe 启用服务生成

sample.proto

.cs在包管理器控制台中通过以下命令生成文件

结果sample.cs文件

试过了

  • ProtoGen.exe sample.proto -output_directory="C:\SomeDir" option (google.protobuf.csharp_file_options).service_generator_type = GENERIC;在包管理器控制台中运行。以错误结束

术语“google.protobuf.csharp_file_options”未被识别为名称..

  • 加入。option service_generator_type = GENERIC;_ sample.proto以错误结束

无法解析符号

如何启用Services生成?

0 投票
1 回答
2837 浏览

c# - protobuf-net:为什么生成的类会缺少 setter?

在什么情况下可以protogen.exe应用于每个属性只有一个 getter(而不是 setter)的.proto文件生成类?C#

0 投票
1 回答
824 浏览

protobuf-net - protobuf-net - protogen 命令行参数

我正在尝试从 .proto 文件生成 csharp (.cs) 文件。我从 github 下载了 protobuf-net 并在本地构建,这样我就可以使用 protogen 生成 .cs 文件。我的问题是,我希望它采用生成输出的 API 的先前版本的格式,例如,新生成的类不是从 ProtoBuf.IExtensible 继承的,而先前的版本确实从 ProtoBuf.IExtensible 继承。例如 protogen 正在生成:

我想要的是: