2010-04-10 43 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