swd*_*don 5 c# protocol-buffers grpc asp.net-core
我正在摸索如何将“google/protobuf/empty.proto”导入到我的 proto 文件中。到目前为止我在做什么:
在我的 .csproj 文件中,我添加了以下内容:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Protobuf Include="C:\Users\me\.nuget\packages\google.protobuf.tools\3.10.0\tools\google\protobuf\*.proto" GrpcServices="Server"/>
<Protobuf Include="Protos\*.proto" GrpcServices="Server" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Grpc.AspNetCore" Version="2.23.2" />
<PackageReference Include="System.Reactive" Version="4.1.6" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)在我的项目文件夹中,我有一个名为“Protos”的文件夹,其中有一个 test.proto 文件,我想在其中使用“empty.proto”,例如:
import "google/protobuf/empty.proto";
但是,我收到错误File not found in project。我也不喜欢在ItemGroup. 使用 google protobuf 知名类型的正确方法是什么?
众所周知的原型(例如empty.proto)实际上在Grpc.Tools包中进行了特殊处理 - 众所周知的.proto文件的导入路径是自动添加的,并且生成的代码已经是Google.Protobuf本身的一部分。
您在原型文件中唯一需要做的就是添加:
import "google/protobuf/empty.proto";
Run Code Online (Sandbox Code Playgroud)
之后您可以正常在消息中使用 google.protobuf.Empty 类型。不需要其他步骤。
小智 5
如果您使用 resharper,请按照图片操作
此问题的原因:虽然 Protobuf 是纯粹基于路径的,并且一旦在硬盘上找到文件,ReSharper 就需要将所有文件添加到解决方案中才能处理它们,而当前在 protobuf 支持中实现的包含文件搜索并不支持允许查找解决方案之外的文件。
玩得开心
| 归档时间: |
|
| 查看次数: |
2321 次 |
| 最近记录: |