【问题标题】:using csharp GRPC gen imported proto file not generated使用 csharp GRPC gen 导入的 proto 文件未生成
【发布时间】:2021-04-17 11:12:39
【问题描述】:

我已将模型和服务分成单独的文件

  • 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;
    }

使用此命令protoc --proto_path=./ --csharp_out=./out/dotnet --grpc_out=./out/dotnet ./main.proto 将在.cs 中生成 GRPC 服务\客户端文件,但不会生成由于缺少在 grpc API 中使用的类型而导致编译错误的模型。

如果我将模型声明移到 main.proto 中,一切正常.. 有什么办法可以分开吗?

【问题讨论】:

  • 您是否尝试将通配符 * 用于多个 protofile(./*.proto 而不是 ./main.proto)?
  • 这实际上有帮助..我认为它会自动发生,我不必指定..但确实使用通配符对我有用..
  • 太棒了。我将其添加为答案。

标签: c# protocol-buffers grpc


【解决方案1】:

您可以将通配符 * 用于多个原型文件

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

【讨论】:

    【解决方案2】:

    protoc 将多个 proto 文件作为参数:

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

    您应该能够像这样添加sub.proto 作为参数:protoc --proto_path=./ --csharp_out=./out/dotnet --grpc_out=./out/dotnet ./main.proto ./sub.proto

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 2021-10-06
      • 2022-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多