خطأ الأداة المخصص: command.proto: 11: 18: "Message2" لم يتم تعريفه
-
25-09-2019 - |
سؤال
أنا أستخدم أحدث إصدار من Protobuf-Net مع تكامل VS2008. لقد قمت بإنشاء رسالتين (Message1 و Message2) ، رسالة واحدة في ملف proto 1. عندما أحاول الرجوع إلى Message2 في Message1 ، فإن أداة مولد الرمز تعطيني خطأ "Message2" غير محدد ولن يتم إنشاء ملف الرمز. الحزمة لكلتا رسالتين هي نفسها.
يبدو ذلك بسبب دمج الأداة مع VS2008 ، ويتوقع تجميع جميع الرسائل في ملف .proto. حاليًا يجب أن ألصق رسالة فارغة بنفس الاسم في ملف message1.proto ، مثل هذا:
message Message1 {
optional Message2 message2 = 1;
}
message Message2 {
}
ثم بعد ذلك ، قم بإزالة إعلان class Message2
من عند Message1.cs
. هل هناك أي إعدادات أحتاج إلى القيام بذلك لتجنب هذا الخطأ ، أو تقديم إعلان فارغ هو الطريقة الوحيدة؟ أو إذا لم يكن هناك ذلك ، أقترح عليك (Marc Gravell) أن تتضمن كلمة رئيسية مثل "Extern" لإخبار المترجم بأن تعريف هذا النوع متاح في فئة أخرى
المحلول
أملك:
(File1.proto
)
import "File2.proto";
message Message1 {
optional Message2 message2 = 1;
}
(File2.proto
)
message Message2 {
}
كل مزين (في IDE) مع الأداة المخصصة (ProtoBufTool
) وهو يعمل بشكل جيد. اثنين .cs
يتم إنشاء الملفات ، واحدة متداخلة تحت File*.proto
الملفات ، مع الأنواع التي تم إنشاؤها الضرورية في كل منها.
هل فاتني شيء؟ أنا خمن يمكنني جعل الملف الأول (وحده) ينشئ الأنواع من الملفات المستوردة ، لكن للقيام بذلك ، أحتاج فعليًا إلى كتابة محلل من نقطة الصفر (في الوقت الحالي ، يستخدم محلل Google .Proto تحت الغطاء).
إعادة تغيير اللغة - هذا ما يتعلق بي ؛ ولكن هل تعني ببساطة (موجود) import
تصريح؟