問題タブ [protobuf-csharp-port]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
238 参照

c# - Google セーフ ブラウジング v3 プロトコル バッファのデコード

Google の Safe Browsing API から返されたプロトコル バッファをデコードしようとしています。

私は C# を使用していますが、ほぼ同じであるため、Java ソリューションも機能します。

私の現在の不完全なコードはこのようなものです

ChunkData.Parser.ParseFrom に何を渡すかよくわかりません

ドキュメントによると、結果は符号なし 32 ビット整数で始まるはずなので、なぜ var len = BitConverter.ToUInt32(newRes, 0) を使用してこの数値を取得しようとしたのでしょう。これはチャンク内のバイト数であるべきだと思っていましたが、この数はバイト配列全体よりもはるかに大きくなっています。

バイト配列の正しい断片を ChunkData パーサーに渡すにはどうすればよいですか?

0 投票する
1 に答える
697 参照

c# - proto3 で RepeatedField を解析する

単純な「Person」オブジェクトは次のように解析されます

RepeatedField<> はどのように解析されますか?

編集: 問題は、RepeatedFields をネットワーク経由で送信できるかどうか、またはメッセージにバンドルして渡す必要があるかどうかです。

0 投票する
1 に答える
979 参照

c# - protobuf オブジェクトを memcached に保存するには?

以下は、データベース/memcached からデータを取得する GRPC システムを作成するために使用している proto ファイルです。

GRPC Getting Startedで詳しく説明されているように、対応する C# クラスを作成しました。サーバーでこれらのクラスを使用して DB クエリの結果を保存し、これらのオブジェクトを memcached に保存しようとしています。残念ながら、protobuf オブジェクトは memcached に追加されません。以下は、memcached に追加する方法であり、isKeyFirstTimeCreated追加しようとするとの値は false です。

memcached の要件に従って、memcached に格納する必要があるすべてのオブジェクトはシリアライズ可能である必要があります。ただし、自動生成された protobuf クラスはシリアル化できません (少なくとも c# が使用するバイナリ フォーマッタに対して)。クラスは部分的な実装であるため、シリアライズ可能にしましたが、RepeatedField はシリアライズ可能ではないため、役に立ちませんでした。

IMO、protobufオブジェクトをmemcachedに直接保存できるようにするより良い方法またはメカニズムがあるはずですが、残念ながらグーグルはその点であまり役に立ちませんでした。

これは2つの方法で達成できます

  • protobuf オブジェクトからシリアル化可能なオブジェクトにデータをコピーし、後で参照できるように memcached に保存します。

  • データをシリアル化可能なオブジェクトにコピーし、そのオブジェクトを使用して protobuf オブジェクトを設定します。

しかし、これら 2 つのアプローチには追加の作業が必要です。これを達成するためのより良い方法はありますか?

[PS: 私は proto3 を使用しているため、c# をサポートしています]

0 投票する
1 に答える
836 参照

nuget - [ここにNugetパッケージを挿入]がdllを抽出しないのはなぜですか

だから私は、キャッシングか何かで何か奇妙なことが私の側で起こっていることを受け入れます. 明らかに、キャッシュを空にし、パッケージフォルダーを削除し、パッケージを再取得しました。

https://www.nuget.org/packages/Google.ProtocolBuffers/

nupkg zipの名前を変更し、調べたところ、dllがそこにあります。それらは抽出されないだけです-それは、nuspecがその中のフォルダー構造に対して間違っているように見えると言いました。しかし、私だけがこの問題を抱えているとは信じがたいです。

私はこれまでこの行動をとったことがなく、約2時間沈みました. ですから、誰かが本当に明白なことを指摘し、過去に使用したパッケージが突然 fubar になった理由を説明できることを願っています。

詳細については編集してください:vs2015エンタープライズで4.6.1コンソールプロジェクトを使用して再現しました(dnxやファンキーなものではなく、標準の.netのみ)。4.5.2 で試したところ、同じ問題が発生しました。プロジェクト内のどの dll にも参照が追加されません。さらに、packages フォルダーには dll はありません。ただし、xml ファイルによって上書きされます。ただし、nupkg に移動し、名前を .zip に変更して開くと、本来あるべき dll が表示されます。また、一般的に管理者としてvsを実行します-コマンドラインからのパッケージのインストールも失敗します(何か違うとは思っていませんでした)

余分な編集: 他の nuget パッケージも機能しています。パッケージが重い他のエリアも進行中です。問題を引き起こしているのは、この1つのパッケージだけです。

パッケージのインストール時のコンソールログ

フォルダ構造 (健全性のために省略)

0 投票する
2 に答える
895 参照

c# - ProtoGen.exe サービス生成を有効にする

からsample.proto

.csパッケージマネージャーコンソールで、次のコマンドを使用してファイルを生成します

結果sample.csファイル

試した

  • ProtoGen.exe sample.proto -output_directory="C:\SomeDir" option (google.protobuf.csharp_file_options).service_generator_type = GENERIC;パッケージ マネージャー コンソールで実行します。エラーで終了

「google.protobuf.csharp_file_options」という用語は名前として認識されません..

  • 追加option service_generator_type = GENERIC;sample.protoます。エラーで終了

シンボルを解決できません

Services生成を有効にする方法

0 投票する
4 に答える
672 参照

c# - C# で Google Protocol Buffers 2.6.1 を使用することは可能ですか?

Google Protocol Buffers 2.6.1 を約 2 年間使用しているプロジェクトがあります。C# が Google Protocol Buffers 3.0.0 でサポートされていることは知っていますが、現時点ではプロトコルを新しいバージョンに移行したくありません。.proto ファイルから C# ファイルを生成する方法を見つけようとしましたが、成功しませんでした。

C# で Google Protocol Buffers 2.6.1 を使用することは可能ですか?

0 投票する
2 に答える
3298 参照

c# - c#ビジュアルスタジオでプロトコルバッファ3タイムスタンプタイプをコンパイルしますか?

メッセージタイプQuake

timestamp.proto同じフォルダに含まれる

protoc 3.0.2コマンドラインのコンパイルが成功する

しかし、VS は proto ファイルを右クリックして [カスタム ツールの実行] を選択すると、「カスタム ツール 'ProtoBufTool' が失敗しました」というエラーで失敗します。

Visual Studio 内から C# クラスを生成するには?

0 投票する
3 に答える
24854 参照

c# - protobufを使用するときに文字列をByteStringに変換する方法は?

文字列オブジェクトを ByteString に変換したい. どのようにできるのか?

私がこのように使用する関数。

結果