2016-07-28 1 views
0

Это моя первая попытка написать прототип с помощью буфера протокола Google. Мой файл выглядит следующим образом:Буфер протокола Google не компилируется для C#

syntax = "proto3"; 
package Clark.EDI.Protos; 

// [START csharp_declaration] 
option csharp_namespace = "Clark.EDI.Protos"; 
// [END csharp_declaration] 

// [START messages] 
message Address { 
    required int32 addressId = 1; 
    optional string namePrimary = 2; 
    optional string nameSecondary = 3; 
    optional string streetPrimary = 4; 
    optional string streetSecondary = 5; 
    optional string city = 6; 
    optional string stateCode = 7; 
    optional string zipCode = 8; 
    optional string countryCode = 9; 
} 
// [END messages] 

Я пытаюсь скомпилировать это так:

protoc --csharp_out = ЦСИ address.proto

Даже Тхо я определяю его как proto3, он запрашивает требуемый или необязательный.

Когда я включаю required или optional Я получаю эти сообщения, но нет .cs-файла.

address.proto: 1: 1: Интерпретация не действующий ASCii 239. элемента код address.proto: 1: 1: Ожидаемое утверждение верхнего уровня (например, "сообщение"). address.proto: 1: 2: Устный не ASCii 187. элемент кода address.proto: 1: 3: Устный не ASCII 191.

элемент кода

Что я упускаю или делаю неправильно?

+1

239 скорее всего будет символом юникодного байта, сохраните файл как ansi –

+0

От визуальной студии? Какая кодировка? –

+0

Обязательные/необязательные удаляются в proto3 –

ответ

0

Я думаю, что ваш текстовый редактор молча добавляет байтовые байты в начале вашего файла . Сообщения об ошибках означают, что первые три байта в файле, 239 187 191 или EF BB BF, который является UTF-8 байт заказа марка:

Encoding Hexadecimal Decimal  CP1252 characters 
UTF-8  EF BB BF  239 187 191  

Wikipedia

Какой текстовый редактор вы используете? Если вы находитесь в Windows, попробуйте открыть файл в «Блокноте» или «Блокнот ++». Если вы играете с настройками кодирования, вы должны увидеть 3 неожиданных символа в начале файла. Удалить их.

+0

Я изменил параметры, чтобы сохранить это значение в UTF-8 без подписи, и теперь получите сообщение: 'address.proto: 1: 18: Непризнанный синтаксический идентификатор« proto3 ». Этот анализатор распознает только «proto2». Я загрузил 2.6.1 отсюда: https://developers.google.com/protocol-buffers/docs/downloads –

1

Если вы используете protoc binary v3, требуемые/необязательные ключевые слова удаляются.

Таким образом, удалить все необходимые/дополнительные ключевые слова

Я составил свое сообщение с помощью V3 и он успешно скомпилирован после удаления необходимых/дополнительных ключевых слов.

примечание: Сохраните файл как ANSI или UTF-8, не сохраняйте его как UniCode.

вы можете установить v3, как NuGet пакет

0

Я столкнулась с такой же вопрос, потому что я скопировал его из PDF. После того, как я закодировал его вручную, он сработал.