.net core 为什么使用Visual Studio 2019在子文件夹中嵌套grpc原型定义时会收到编译器警告和错误?
我正在使用Visual Studio 2019在.NetCore中创建gRPC应用程序。 我正在使用orchestrator模式构建一个微服务集群。 我已经将我的服务组织到一系列嵌套文件夹中,以模拟服务布局的体系结构 在Visual Studio 2019中构建时,我收到编译器警告和错误 我收到以下警告消息:.net core 为什么使用Visual Studio 2019在子文件夹中嵌套grpc原型定义时会收到编译器警告和错误?,.net-core,visual-studio-2019,grpc,grpc-c#,.net Core,Visual Studio 2019,Grpc,Grpc C#,我正在使用Visual Studio 2019在.NetCore中创建gRPC应用程序。 我正在使用orchestrator模式构建一个微服务集群。 我已经将我的服务组织到一系列嵌套文件夹中,以模拟服务布局的体系结构 在Visual Studio 2019中构建时,我收到编译器警告和错误 我收到以下警告消息: <ItemGroup> <Protobuf Include="../../Protos/FooProtos/fooservice.proto"
<ItemGroup>
<Protobuf Include="../../Protos/FooProtos/fooservice.proto" GrpcServices="None" ProtoRoot="../Protos/">
<Link>Protos/FooProtos/fooservice.proto</Link>
</Protobuf>
</ItemGroup>
警告Protobuf项“../../Protos/FooProtos/fooservice.proto”已被删除
ProtoRoot元数据“../Protos/”不是其路径的前缀。
无法计算相对路径。
FooServices C:\Users\XXXX.nuget\packages\grpc.tools\2.36.4\build\u protobuf\Google.protobuf.tools.targets 167
我收到以下错误消息:
<ItemGroup>
<Protobuf Include="../../Protos/FooProtos/fooservice.proto" GrpcServices="None" ProtoRoot="../Protos/">
<Link>Protos/FooProtos/fooservice.proto</Link>
</Protobuf>
</ItemGroup>
文件不位于使用--proto_path(或
-一) 。必须指定包含此文件的--proto_路径。请注意,proto_路径必须是.proto文件的精确前缀
名称——protoc太笨了,无法判断两条路径(例如。
绝对和相对)是等价的(比你想象的要难)
这是项目文件中的一个片段:
<ItemGroup>
<Protobuf Include="../../Protos/FooProtos/fooservice.proto" GrpcServices="None" ProtoRoot="../Protos/">
<Link>Protos/FooProtos/fooservice.proto</Link>
</Protobuf>
</ItemGroup>
我有点理解我收到的警告和错误信息,但不确定如何纠正它。
我想保留microservices项目和proto定义的嵌套文件夹/子文件夹布局
反映建筑的布局
如何在Visual Studio中更正此问题?基本上就是警告所说的。ProtoRoot必须是.proto文件路径的前缀。您的路径是
。/../Protos/FooProtos/fooservice.proto
,因此ProtoRoot应该设置为。/../Protos/
(而不是您的示例中的。/Protos
)。在.proto文件中,您的导入应该相对于ProtoRoot(例如,要导入fooservice,其他.proto文件应该将其作为import“FooProtos/fooservice.proto”;
)导入)