2010-04-10 9 views
1

J'utilise la dernière version de protobuf-net avec intégration VS2008. J'ai créé 2 messages (Message1 et Message2), 1 message dans 1 fichier proto. Lorsque j'essaie de référencer Message2 dans Message1 l'outil générateur de code me donne l'erreur "Message2" n'est pas défini et ne générera pas le fichier de code. Le package pour les deux messages est identique.
Cela ressemble à cela à cause de l'intégration de l'outil avec VS2008 il s'attend à ce que tous les messages du même fichier .proto soient compilés. Actuellement, je dois coller un message vide avec le même nom dans Message1.proto fichier, comme ceci:Erreur de l'outil personnalisé: Command.proto: 11: 18: "Message2" n'est pas défini

message Message1 { 
optional Message2 message2 = 1; 
} 

message Message2 { 
} 

Et puis plus tard supprimer la déclaration de class Message2 de Message1.cs. Y a-t-il des paramètres que je dois faire pour éviter cette erreur, ou est-ce que fournir une déclaration vide est le seul moyen? Ou s'il n'y a pas alors je suggère que vous (Marc Gravell) inclure un mot-clé comme « extern » pour indiquer au compilateur que la définition de ce type est disponible dans une autre classe

Répondre

2

Je:

(File1.proto)

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

(File2.proto)

message Message2 { 
} 

décorées (dans l'EDI) avec l'outil personnalisé (ProtoBufTool) et cela fonctionne bien. Deux fichiers .cs sont générés, chacun imbriqué sous les fichiers File*.proto, avec les types générés nécessaires dans chacun d'eux.

Ai-je manqué quelque chose? I deviner Je pourrais faire le premier fichier (seul) générer les types à partir des fichiers importés, mais pour ce faire, j'ai vraiment besoin d'écrire un analyseur à partir de zéro (pour le moment il utilise l'analyseur .proto de google sous le capot) .

Re changer la langue - ce n'est pas à moi de décider; mais voulez-vous simplement dire la déclaration (existante) import?

+0

non, il me manquait quelque chose – ata