2

単一の.protoファイルに基づいてprotogenに複数のファイル(クラスごとに1つ)を出力させることは可能ですか?

私は約200のクラスを出力する非常に大きな.protoファイルを使用していますが、現在はすべて1つのファイルになっています。生成されたクラスを使用する必要がある場所の1つは、メモリに非常に制約のある環境(Windows Phoneバックグラウンドエージェント)です。

制約された環境にロードされたアセンブリに必要なクラスのみを含めることができるようにしたいのですが、生成されたクラスがすべて1つのファイルにある場合、これを簡単に行うことはできません。それらを複数のファイルに出力させることができれば、制約のある環境のアセンブリで必要なファイルにのみリンクできます。

protogenにクラスを別々のファイルに出力させる方法はありますか?このオプションが表示されず、現在オプションのみを使用していumbrella-classnameます。

生成されたファイルを手動で編集することはできません。protogenで編集できない場合、複数のクラスを含むファイルを分割できる別のコマンドラインツールを利用できますか?(車輪の再発明を節約するため。)

更新
私はGoogle.ProtocolBuffers.dll継承された決定を使用しており、簡単に変更することはできません。
.protoファイルの編集/分割も可能ではありません。(カスタムステップでない限り。)

4

1 に答える 1

0

csharp_options にはこれに対するオプションがありますが、実装されていません。

// Whether to generate a single file for everything within the
// .proto file (false), or one file per message (true).
// This option is not currently honored; please log a feature
// request if you really want it.
optional bool multiple_files = 4;

関連するファイルを削除し、すべての依存関係が正しいことを確認する必要があることを考えると、proto ファイルを別々のファイルに分割するという、私が提案する解決策よりも実際には多くの作業を節約できないように思えます。これは「可能性もありません」と言いますが、基本的には現時点で私が提案できるのはそれだけです-なぜ可能性がないのですか?

編集:別のアイデアがありました。ファイルをその記述子に解析するために、(特に指定しない場合は自動的に実行されるようになりました)のprotocステップを実行する可能性があります。次に、記述子を別のプログラムにロードし、他の protobuf メッセージと同じように変更し (そこからビルダーを作成し、メッセージを編集し、ビルドします)、記述子を保存します。その後、残りの記述子で protogen を使用して、必要なクラスのみを生成できます...protogen.proto

于 2012-04-12T13:02:32.763 に答える