Сборки Google Protobuf 3.0.0 для C#

В нашем проекте мы успешно используем Google Protobuf для C++. Теперь необходимо скомпилировать тот же файл *.proto, чтобы использовать его в коде C#. Я скачал последнюю версию Protobuf 3.0.0-alpha-3. Он обеспечивает поддержку формата proto2 для C#, что мне достаточно. Я могу успешно создать свой файл *.proto и получить файл *.cs. Однако, когда я добавляю полученный файл *.cs в мой проект C# и пытаюсь его собрать, я получаю ошибки компилятора, подобные этим: "The type or namespace name 'Google' could not be found in the global namespace (are you missing an assembly reference?)" Это место, где происходит ошибка:

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: DiagramExport.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.ProtocolBuffers;
using pbc = global::Google.ProtocolBuffers.Collections;
using pbd = global::Google.ProtocolBuffers.Descriptors;

Теперь я не нахожу никакой DLL и т. Д. В ZIP-релизе, доступном на странице проекта, который я мог бы включить в качестве ссылки в мой проект на C#. Там есть только protoc.exe и некоторые файлы *.proto. Мой простой вопрос: где мне взять эти сборки?

(Примечание: я пытался собрать проект protobuf-csharp-3.0.0-alpha-3 из источников, следуя инструкциям в файле README, но не смог собрать его с помощью Visual Studio 2013 Update 4 "из коробки"; я получаю ряд ошибок компилятора.)

2 ответа

Решение

Прочитав эту и эту страницу документации, я обнаружил, что есть возможность установить пакет NuGet для буферов протокола для моего проекта, выполнив следующую команду в консоли диспетчера пакетов:

Install-Package Google.ProtocolBuffers

Консоль доступна в Visual Studio 2013 через ИНСТРУМЕНТЫ -> Диспетчер пакетов NuGet -> Консоль диспетчера пакетов. Менеджер скачал пакет, и я получил две ссылки "Google.ProtocolBuffers" и "Google.ProtocolBuffers.Serialization" в моем проекте, которые порадовали компилятор. Теперь работает отлично!

Посмотрите примечания к выпуску здесь

В разделе C# (бета) вы найдете:

Breaking: Preconditions is renamed to ProtoPreconditions
Breaking: GeneratedCodeInfo is renamed to GeneratedClrTypeInfo

Так что кажется protoc.exe которые идут с Grpc.Tools Пакет генерирует "старый" код. Я заменил это protoc.exe с этим и перекомпилировал (восстановил) мои классы, которые устранили проблему.

Другие вопросы по тегам