c# - 从不同目录导入 proto 文件
问题描述
我正在努力为 grpc 导入编写正确的配置。
所以.net的解决方案结构是这样的:
\Protos\Common\common.proto
\Protos\Vehicle\car.proto
\CarMicroservice
在 car.proto 里面我有:import "common.proto"
我想要的是生成的 grpc 代码在CarMicroservice 项目中。
在 CarMicroservice.csproj 中,我已经编写了 protos 的路径:
<Protobuf Include="common.proto" ProtoRoot="..\Protos\Common\" />
<Protobuf Include="car.proto" ProtoRoot="..\Protos\Vehicle\" />
但是出现错误:'common.proto'没有这样的文件或目录
问题是:如何在 car.proto 中正确导入 common.proto?
注意:我已经看过类似的问题,但无法使其适用于我的案例
Importing .proto files from another project
解决方案
好的,我终于解决了这个问题。@DazWilkin 也指出了这一点。
- 你不能在 中使用相对路径
import
,所以你应该使用项目的绝对路径。就我而言,它是:import "Common/common.proto"
- 使用项目根目录作为 proto 文件的位置。因此,有趣的部分不是
ProtoRoot="..\Protos\Common\"
使用ProtoRoot="../Protos/"
Now 。
出于某种原因,当我对 ProtoRoot 路径使用反斜杠时,"..\Protos\
我收到了“找不到文件”的错误。所以不要使用反斜杠作为路径。CarMicroservice.csproj 中的最终代码如下所示:
<Protobuf Include="Common/common.proto" ProtoRoot="../Protos/" />
<Protobuf Include="Vehicle/car.proto" ProtoRoot="../Protos/" />
推荐阅读
- xml - 如果一个字段已填写,xml 中是否需要其他字段?
- sql - Oracle 按客户和日期分组
- php - 如何使输入中包含信息
- google-api - 用于 Gsuite 活动和警报获取的 Python googleapiclient - 过滤和推送模式
- java - 用Java递归遍历继承树
- python-2.7 - 我如何运行这个makefile(ubuntu,python2.7)
- asp.net - FirstOrDefault() i'm getting a ArgumentNullException
- deployment - Can we run terraform import in Azure DevOps release pipeline
- python - Seaborn, how to draw 2 lines from same dataframe
- css - Tailwind:图像顶部居中的 div