2010-04-10 25 views
1

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

message Message1 { 
optional Message2 message2 = 1; 
} 

message Message2 { 
} 

再后来就从Message1.cs去除class Message2声明。 是否有任何设置需要我这样做才能避免这种错误,或者提供一个空声明的唯一方法? 或者,如果没有那么我建议你(马克Gravell)包括像“外部”关键字来告诉编译器,这种类型的定义可在另一个类

回答

2

我:

File1.proto

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

File2.proto

message Message2 { 
} 

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

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

重新改变语言 - 这不是我自己的;但是,你的意思是(现有的)import声明?

+0

不,我错过了一些东西 – ata 2010-04-12 05:25:31