web-dev-qa-db-ja.com

C#用のGoogle Protobuf3.0.0アセンブリ

私たちのプロジェクトでは、C++用のGoogleProtobufを正常に使用しています。ここで、C#コードで使用するために同じ* .protoファイルをコンパイルする必要があります。最近ダウンロードしました Protobufバージョン3.0.0-alpha- 。それは私にとって十分であるC#のためのproto2フォーマットのサポートを提供します。 * .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;

プロジェクトページで利用可能なリリースZipにDLLなどが見つかりません。C#プロジェクトで参照として含めることができます。protoc.exeと一部の* .protoファイルのみが含まれています。私の簡単な質問は次のとおりです:これらのアセンブリはどこで入手できますか?

(備考:READMEファイルの指示に従ってソースからプロジェクトをビルドしようとしましたが、ビルドに失敗しました protobuf-csharp-3.0.0-alpha- Visual Studio 2013 Update 4を使用すると、「すぐに使用できます」。コンパイラエラーが多数発生します。)

14
Vivit

this および this のドキュメントページを読んだ後、パッケージマネージャーコンソールで次のコマンドを実行することにより、プロジェクトのProtocol BuffersNuGetパッケージをインストールできる可能性があることを発見しました。

Install-Package Google.ProtocolBuffers

コンソールには、Visual Studio2013で[ツール]-> [NuGetパッケージマネージャー]-> [パッケージマネージャーコンソール]からアクセスできます。マネージャーがパッケージをダウンロードし、プロジェクトで「Google.ProtocolBuffers」と「Google.ProtocolBuffers.Serialization」という2つの参照を取得して、コンパイラーを満足させました。今では完璧に動作します!

10
Vivit

リリースノートをご覧ください ここ

C#(ベータ)セクションの下に次の情報があります。

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

だからprotoc.exeGrpc.Toolsパッケージは「古い」コードを生成します。私はそれを置き換えましたprotoc.exe with this oneで、問題を修正したクラスを再コンパイル(再生成)しました。

5
pieterlouw