Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 为什么使用Visual Studio 2019在子文件夹中嵌套grpc原型定义时会收到编译器警告和错误?_.net Core_Visual Studio 2019_Grpc_Grpc C# - Fatal编程技术网

.net core 为什么使用Visual Studio 2019在子文件夹中嵌套grpc原型定义时会收到编译器警告和错误?

.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"

我正在使用Visual Studio 2019在.NetCore中创建gRPC应用程序。 我正在使用orchestrator模式构建一个微服务集群。 我已经将我的服务组织到一系列嵌套文件夹中,以模拟服务布局的体系结构

在Visual Studio 2019中构建时,我收到编译器警告和错误

我收到以下警告消息:

<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”;
)导入)