简体   繁体   中英

using csharp GRPC gen imported proto file not generated

I have separated my models and service into separate files

  • main.proto
    syntax = "proto3";
    package grpc;
    import "sub.proto";
    
    service Users {
        // SSO Adapter Profiles
      
        rpc AddUser (UserRequest) returns (UserResponse) {}
    }
  • sub.proto
    syntax = "proto3";
    package grpc;
    
    
    message UserRequest {
        string FirstName = 1;
        string LastName = 2;
    }
    
    message UserResponse {
        int64  id=1;
    }

Using this command protoc --proto_path=./ --csharp_out=./out/dotnet --grpc_out=./out/dotnet./main.proto will generate the GRPC service\client file in .cs but will not generate the models causing compilation error due to missing types use in the grpc APIs'.

If I move the models declaration into the main.proto everything works.. Any way to keep thins separated?

You can use wild character * for multiple protofiles

protoc --proto_path=./ --csharp_out=./out/dotnet --grpc_out=./out/dotnet ./*.proto

protoc takes multiple proto files as an argument:

❯ protoc --help
Usage: protoc [OPTION] PROTO_FILES

You should be able to add sub.proto as an argument like so: protoc --proto_path=./ --csharp_out=./out/dotnet --grpc_out=./out/dotnet./main.proto./sub.proto .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM