Ошибка пользовательского инструмента: Command.proto: 11: 18: «Сообщение 2» не определено - PullRequest
1 голос
/ 10 апреля 2010

Я использую последнюю версию protobuf-net с интеграцией VS2008. Я создал 2 сообщения (Message1 и Message2), 1 сообщение в 1 файле прото. Когда я пытаюсь сослаться на Message2 в Message1, инструмент генератора кода выдаёт мне ошибку «Message2» не определена и не будет генерировать файл кода. Пакет для обоих сообщений одинаков.
Похоже, что из-за интеграции инструмента с VS2008 он ожидает компиляции всех сообщений в одном файле .proto. В настоящее время я должен вставить пустое сообщение с тем же именем в файл Message1.proto, например:

message Message1 {
 optional Message2 message2 = 1;
}

message Message2 {
}

А затем удалите объявление class Message2 из Message1.cs. Есть ли какие-либо настройки, которые мне нужно сделать, чтобы избежать этой ошибки, или единственный способ предоставить пустое объявление? Или, если этого не произойдет, я предлагаю вам (Марк Грэвелл) включить ключевое слово, например «extern», чтобы сообщить компилятору, что определение этого типа доступно в другом классе

1 Ответ

2 голосов
/ 10 апреля 2010

у меня есть:

(File1.proto)

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

(File2.proto)

message Message2 {
}

Каждый оформлен (в IDE) с помощью специального инструмента (ProtoBufTool) и работает нормально. Создаются два файла .cs, каждый из которых вложен в файлы File*.proto, с необходимыми сгенерированными типами в каждом.

Я что-то пропустил? Я думаю Я мог бы заставить первый файл (один) генерировать типы из импортированных файлов, но для этого мне действительно нужно было бы написать парсер с нуля (в настоящий момент он использует парсер Google. под капотом).

Перемена языка - это не мое дело; но вы просто имеете в виду (существующую) import декларацию?

...