在Visual Studio / Rider中使用原始文件中的导入

问题描述 投票:-1回答:1

在.proto文件中使用导入时,出现“找不到文件”错误。我正在使用Rider,但在使用Visual Studio时遇到相同的问题。

第一个原始文件:

syntax = "proto3";

import "/fileToImport.proto";

service GreeterAPI {
  rpc SayHello (SayHelloRequest) returns (SayHelloResponse);
}

message SayHelloRequest {
  string name = 1;
}

message SayHelloResponse {
  string answer = 1;
}

我要导入的第二个原型文件:

syntax = "proto3";

message Foo {
  string bar = 1;
}

两个文件在项目目录中都彼此相邻。

。csprjo文件:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netcoreapp3.0</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="Google.Protobuf" Version="3.10.1" />
      <PackageReference Include="Grpc.Core" Version="2.25.0" />
      <PackageReference Include="Grpc.Tools" Version="2.25.0" />

      <Protobuf Include="**/*.proto" />
    </ItemGroup>

</Project>

如果我在没有导入行的情况下构建项目,那么一切都很好。但是随着导入行,我得到“找不到文件”

我知道我可以使用--proto_path来告诉协议所有文件。但是我不想建立一个额外的预构建脚本或类似的东西。我想使用该构建来支持IDE。

visual-studio protocol-buffers protobuf-net rider proto
1个回答
0
投票

我和您有同样的问题,对我有用的解决方法是将.proto文件的包含文件夹添加到导入中。假设两个.proto文件都在文件夹“ Protos”中,请尝试更改

import "/fileToImport.proto";import "Protos/fileToImport.proto"

也尝试从.csproj文件中更改

<Protobuf Include="**/*.proto" />

<ItemGroup> <Protobuf Include="Protos/includingFile.proto" Link="includingFile.proto"/> <Protobuf Include="Protos/fileToInclude.proto" Link="fileToInclude.proto"/> </ItemGroup>

希望有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.