問題タブ [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.
c# - Google セーフ ブラウジング v3 プロトコル バッファのデコード
Google の Safe Browsing API から返されたプロトコル バッファをデコードしようとしています。
私は C# を使用していますが、ほぼ同じであるため、Java ソリューションも機能します。
私の現在の不完全なコードはこのようなものです
ChunkData.Parser.ParseFrom に何を渡すかよくわかりません
ドキュメントによると、結果は符号なし 32 ビット整数で始まるはずなので、なぜ var len = BitConverter.ToUInt32(newRes, 0) を使用してこの数値を取得しようとしたのでしょう。これはチャンク内のバイト数であるべきだと思っていましたが、この数はバイト配列全体よりもはるかに大きくなっています。
バイト配列の正しい断片を ChunkData パーサーに渡すにはどうすればよいですか?
c# - proto3 で RepeatedField を解析する
単純な「Person」オブジェクトは次のように解析されます
RepeatedField<> はどのように解析されますか?
編集: 問題は、RepeatedFields をネットワーク経由で送信できるかどうか、またはメッセージにバンドルして渡す必要があるかどうかです。
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# をサポートしています]
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つのパッケージだけです。
パッケージのインストール時のコンソールログ
フォルダ構造 (健全性のために省略)
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
生成を有効にする方法
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 を使用することは可能ですか?
c# - c#ビジュアルスタジオでプロトコルバッファ3タイムスタンプタイプをコンパイルしますか?
メッセージタイプQuake
timestamp.proto
同じフォルダに含まれる
protoc 3.0.2
コマンドラインのコンパイルが成功する
しかし、VS は proto ファイルを右クリックして [カスタム ツールの実行] を選択すると、「カスタム ツール 'ProtoBufTool' が失敗しました」というエラーで失敗します。
Visual Studio 内から C# クラスを生成するには?