I'm building out a series of ProtoBuf definitions for a .NetCore gRPC application. I'm using the Orchestrator pattern as I will be creating a series of microservices.
I am running into issues with my proto definitions throwing compiler errors as being "undefined." The definitions are in several different files (with different C# namespaces). What follows is a simplified version of my definitions. Consider the following protobuf files: **service.proto** syntax = "proto3"; option csharp_namespace = "RequestHandlerService"; package test; service Handler { rpc AddItem1(G_RequestType1) returns (G_RequestResponse) { } rpc AddItem2(G_RequestType2) returns (G_RequestResponse) { } } message G_RequestType1{ string originId = 1; string request = 2; } message G_RequestType2{ string originId = 1; string request = 2; } message G_RequestResponse{ string response = 1; } **windowsservice.proto:** syntax = "proto3"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Windows.RequestHandler.Service"; package windows.requesthandler.service; service WindowsHandler { rpc Action1(G_Action1Request) returns (G_Action1Response) { } rpc Action2(G_Action2Request) returns (G_Action2Reponse) { } } message G_Action1Request{ string transactionId = 1; google.protobuf.Timestamp DateTimeStamp = 2; string filePath = 3; } message G_Action2Request{ string transactionId = 1; google.protobuf.Timestamp DateTimeStamp = 2; string textToInsert = 3; } message G_Action1Response { google.protobuf.Timestamp DateTimeStamp = 1; string fileSecurityStatusMessage = 2; G_Action1Request action1Request = 3; } message G_Action2Response { google.protobuf.Timestamp DateTimeStamp = 1; string fileModifierStatusMessage = 2; G_Action2Request action2Request = 3; } message G_WindowsRequest { int32 requestId = 1; oneof RequestType{ G_Action1Request action1Request = 2; G_Action2Request action2Requestion = 3; } } message G_WindowsRequestResponse { bool wasSuccessful = 1; string response = 2; oneof ResponseType{ G_Action1Response action1Response = 3; G_Action2Response action2Respone = 4; } } **orchestrator.proto** syntax = "proto3"; option csharp_namespace = "OrchestratorService"; package test; import "service.proto"; import "windowsservice.proto"; service Orchestrator { rpc RegisterClient(G_RegisterClientRequest) returns (stream G_Response) { } rpc EnqueueRequest(G_OrchestrationRequest) returns (G_Response) { } } message G_OrchestrationRequest{ string originId = 1; oneof RequestType{ G_RequestType1 requestType1 = 2; G_RequestType2 requestType2 = 3; G_Response response = 4; G_WindowsRequest windowsRequest = 5; G_WindowsRequestResponse windowsRequestResponse = 6; } } message G_RegisterClientRequest{ string clientId = 1; } message G_Response{ bool wasSuccessful = 1; string response = 2; } Here is the <ItemGroup> definition from the csproj file for my Orchestrator project: <ItemGroup> <Protobuf Include="../Protos/orchestrator.proto" GrpcServices="Server" ProtoRoot="../Protos/"> <Link>Protos/orchestrator.proto</Link> </Protobuf> <Protobuf Include="../Protos/service.proto" GrpcServices="Client" ProtoRoot="../Protos/"> <Link>Protos/service.proto</Link> </Protobuf> <Protobuf Include="../Protos/windowsservice.proto" GrpcServices="Client" ProtoRoot="../Protos/"> <Link>Protos/windowservice.proto</Link> </Protobuf> </ItemGroup> Both **G_WindowsRequest** and **G_WindowsRequestResponse** are throwing a compiler error saying they are undefined. Is this an issue with **csharp_namespace** and/or **package** resolution? Is there a way to enforce separate package/csharp_namespace definitions within the separate proto definitions, but reference those definitions within the rolled up "orchestrator" proto file definition? **Here is a snippet of the compiler errors I am seeing:** > 2> orchestrator.proto(22,5): error : "G_WindowsRequest" is not > defined. 2> orchestrator.proto(23,5): error : > "G_WindowsRequestResponse" is not defined. 2>Done building target > "_Protobuf_CoreCompile" in project "Protos.csproj" -- FAILED. 2> > 2>Done building project "Protos.csproj" -- FAILED. 2> 2>Build FAILED. > 2> 2>orchestrator.proto(22,5): error : "G_WindowsRequest" is not > defined. 2>orchestrator.proto(23,5): error : > "G_WindowsRequestResponse" is not defined. 2> 0 Warning(s) 2> 2 > Error(s) -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/3fbd4e41-390c-4dfe-9cc1-676ae95d9caan%40googlegroups.com.