首页 > 解决方案 > 将 'library' 指令添加到使用 protoc 生成的 dart 代码中

问题描述

有人能告诉我如何让 protoc 使用领先的指令生成 dart 文件吗?

我正在使用 dart-protoc-plugin (v0.10.2) 从 proto 文件生成我的 dart、c++、c#、js 和 java 模型。我的印象是没有办法让 protoc 将“库”指令添加到生成的 dart 文件中,直到我注意到该指令出现在另一个项目中(参见date.pb.dart)。

如果我采用相同的文件(date.proto),我无法让 protoc 生成包含“库”指令的 dart 文件。

简而言之:我想取一个 .proto 文件,内容如下

syntax = "proto3";

package another.proj.nspace;

message MyObj {
  ...
}

并生成一个带有类似于以下代码段的前导“库”指令的 .dart 文件

///
//  Generated code. Do not modify.
///
// ignore_for_file: non_constant_identifier_names,library_prefixes
library another.proj.nspace;
...

注意:我不关心指令的实际值,因为我可以重组我的代码以获得所需的结果。我只需要一种方法让protoc添加库指令......

我用来生成飞镖文件的基本命令是

protoc --proto_path=./ --dart_out="./" ./another/proj/nspace/date.proto

不幸的是,dart-protoc-plugin 的README不是很有帮助,我不得不通过源代码找出可用的选项;目前似乎唯一特定于 dart 的选项与 grpc 有关。

我尝试了其他语言的选项(例如“库”和“基本路径”),但没有任何成功。

如果可能的话,它将大大简化我的工作流程,但我开始觉得date.pb.dart中的库指令是在生成代码之后添加的......

标签: dartprotocol-buffersprotoc

解决方案


在询问了一下之后,似乎library指令在某个阶段从 protoc 插件中删除了(请参阅 pull request),因此不再支持它。


推荐阅读