1

我正在使用最新版本的 protobuf-net 与 VS2008 集成。我在 1 个原型文件中创建了 2 条消息(Message1 和 Message2),1 条消息。当我尝试在 Message1 中引用 Message2 时,代码生成器工具给我错误“Message2”未定义并且不会生成代码文件。两条消息的包是相同的。
看起来是这样的,因为该工具与 VS2008 集成,它希望编译同一 .proto 文件中的所有消息。目前我必须在 Message1.proto 文件中粘贴一条同名的空消息,如下所示:

message Message1 {
 optional Message2 message2 = 1;
}

message Message2 {
}

然后稍后删除class Message2from的声明Message1.cs。是否需要进行任何设置以避免此错误,或者提供空声明是唯一的方法?或者如果没有,那么我建议你(Marc Gravell)包含一个像“extern”这样的关键字来告诉编译器这种类型的定义在另一个类中可用

4

1 回答 1

2

我有:

( File1.proto)

import "File2.proto";
message Message1 {
 optional Message2 message2 = 1;
}

( File2.proto)

message Message2 {
}

每个都使用自定义工具 ( ) 装饰(在 IDE 中)ProtoBufTool并且工作正常。生成了两个.cs文件,每个文件都嵌套在文件下,每个File*.proto文件中都有必要的生成类型。

我错过了什么吗?我我可以让第一个文件(单独)从导入的文件中生成类型,但要做到这一点,我实际上需要从头开始编写一个解析器(目前它在后台使用谷歌的 .proto 解析器)。

重新更改语言 - 这不取决于我;但你只是指(现有的)import声明吗?

于 2010-04-10T19:26:33.417 回答