首页 > 解决方案 > 从另一个项目导入链接的 .proto 文件

问题描述

我有一个这样的解决方案:

项目布局

如您所见,通过将其添加到我的 .csproj 文件中,我已成功地将 service.proto 链接到我的 OrchestrationServer 项目中:

<Protobuf Include="..\RequestHandler\Protos\service.proto" GrpcServices="None" ProtoRoot="..\RequestHandler\Protos\"/>

我现在的问题是,我怎样才能将它实际导入我的 orchestrator.proto 文件中?我已经尝试了各种路径,但没有任何运气。目前,这两个 .proto 文件看起来像这样

Orchestrator.proto:

syntax = "proto3";

option csharp_namespace = "OrchestratorService";

package test;

import "service.proto";

service Orchestrator
{
  rpc EnqueueRequest(G_NewRequest) returns (G_NewResponse) { }
}

message G_NewRequest{
  string originId = 1;
  oneof request_type{
    G_RequestType1 request1 = 2;
    G_RequestType2 request2 = 3;
  }
}

message G_NewResponse{
  string response = 1;
}

服务原型:

syntax = "proto3";

option csharp_namespace = "RequestHandlerService";

package test;

service Handler
{
  rpc AddItem1(G_RequestType1) returns (G_NewResponse) { }
  rpc AddItem2(G_RequestType2) returns (G_NewResponse) { }
}

message G_RequestType1{
  string request = 1;
}

message G_RequestType2{
  string request = 1;
}

message G_NewResponse{
  string originId = 1;
  string response = 2;
}

目前,orchestrator.proto 中针对 service.proto 中引用的类型引发了错误。任何帮助将非常感激。此外,如果有人可以列出在 proto 文件声明不同的包时所需的额外步骤,那也很棒。

标签: c#.netprotocol-buffersprotobuf-net

解决方案


推荐阅读