Grpc.Tools 在 1.17 後我們可以將 proto 檔的編譯動作直接整到 dotnet build。使用上只要在專案檔中加上 設定即可。

像是筆者這邊準備了一個 GRPC.Message 專案。加入 Grpc/Grpc.Tools/Google.Protobuf NuGet 套件參考。

1.png

proto 檔放在上上層的 proto 目錄下。

.
|___ proto
|  |___ message.proto
|  |___ service.proto
|___ src
|___ GRPC.Message

那在 GRPC.Message 的專案檔中可以像下面這樣加入 設定,會用 Include 指定 proto 檔、ProtoRoot 指定 proto 檔中 import 語法的參考位置、OutputDir 指定輸出位置、GrpcService 指定要編譯 gRPC 的 server 還是 client…等。

...

...

2.png

像是如果只要產生 Server 需要使用的類別就可以像這樣設定。

...

...

如果只要產生 Client 需要使用的類別就可以像這樣設定。

...

...

設定可參閱:

NameDefaultValueSynopsis
Accesspublicpublic, internalGenerated class access
ProtoCompiletruetrue, falsePass files to protoc?
ProtoRootCommon root for set of files
CompileOutputstruetrue, falseC#-compile generated files?
OutputDirDirectory for generated C# files
GrpcOutputDirDirectory for generated stubs
GrpcServicesbothnone, client, server, bothGenerated gRPC stubs

設定好後建置專案。

3.png

proto 檔就會被編譯成對應的程式碼。

4.png