ねののお庭。

かりかりもふもふ。

Rider(Mac)でgRPCのprotoファイルから生成されたC#スクリプトの補完が効かなかったりした件。

Riderのほうにもこんな感じのissueが存在していたで問題は認識されてるっぽい。2019.3になれば普通に解決するのかなぁ。(問題にぶつかったの2019.2です)

C#でgRPCのため、protoファイルからC#のテンプレートを生成して参照するため、 Grpc.Toolsパッケージを参照に追加して、csprojに

<ItemGroup>
    <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>

とかしていれば、自分でprotocコマンドとか叩かないでcsファイルが生成してくれて便利!あとは適当に継承させてやればさっくりgRPCを使う準備ができます。なるはずなのですが。

Rider(Mac)ではビルドは通っても、生成されたC#のclass達に対する補完が一切聞かなかったりします。intelliSenseがバキバキ効かないC#なんて価値が9割減です。

なのでどうにかintelliSense効くようにしたいわけです。gRPCの方のissueにごちゃごちゃ書いてありましたけど、うーん。

結果として効いたのは参照しているGrpc.Toolsのバージョンを弄ってみる、です。 ASP.NET CoreのgRPCテンプレートで間接参照しているGrpc.Toolsは2.23.0でした。 これを2.24.0を参照するようにしてあげると、あら不思議。ちゃんと補完されるようになります。要するにcsprojにこんなのが含まれていると幸せになったりします。かもしれません。

<PackageReference Include="Grpc.Tools" Version="2.24.0" />

issueの方でもパッケージのバージョンでどうのこうのと言われていますが、どうもそれは健在なのか...?

まとめ

Grpc.Toolsのバージョンいじると幸せになれるかもしれない。

その他

MacでASP.NET CoreのgRPCとか使うの、kestrelの設定弄ったりしてめんどくさい(2,3行ではあるが)。C#でのクライアント側にもおまじないをしないといけなかったりしてめんどくさい(1行ではあるが)。 C Coreの方はよく知らないけど、ASP.NET CoreのgRPCはWindowsでやったほうが幸せになれる気がする。Visual Studioではこういった問題起きなかったので...()