Visual StudioでProtocol Buffersを試す

Protocol Buffers使うなら.protoファイルでスキーマ定義してなんぼ*1ということでそうするが、protocで一々コンパイルとかはありえないのでVisual Studioに以下のカスタムツールを追加。

marketplace.visualstudio.com

プロジェクトにNuGetで以下をインストール

.protoファイルはこんな感じのを書いてプロジェクトに追加。

.protoファイルのプロパティを開いてカスタムツールの欄にProtobufGeneratorと入力。これで.protoファイルを保存するたびに.csファイルが生成される。(.protoファイルを右クリックして「カスタムツールの実行」でも同じ)

あとは生成されたクラスを使うだけ。

出力結果

Serializing: { "id": "123", "messageType": "ERROR", "inners": [ { "value": "Inner item value" } ], "body": "Message body" }
Deserialized: { "id": "123", "messageType": "ERROR", "inners": [ { "value": "Inner item value" } ], "body": "Message body" }

型の初期値が入っているフィールドはToString()で省略されるようなのでログとかは注意する。

.protoファイルでシンタックスハイライトが欲しければこんなのとか入れておく。Visual Studioをダークテーマにしている場合はちょっと微妙になる。

marketplace.visualstudio.com