我正在努力为 grpc 导入编写正确的配置。
所以.net解决方案的结构是这样的:
\Protos\Common\common.proto
\Protos\Vehicle\car.proto
\汽车微服务
在 car.proto 里面我有:import "common.proto"
我想要的是生成的 grpc 代码位于项目内部汽车微服务。
在 CarMicroservice.csproj 内部,我编写了原型的路径:
<Protobuf Include="common.proto" ProtoRoot="..\Protos\Common\" />
<Protobuf Include="car.proto" ProtoRoot="..\Protos\Vehicle\" />
但出现错误:“common.proto”没有这样的文件或目录
问题是:
如何在 car.proto 中正确导入 common.proto?
注意:我已经看过类似的问题,但无法使其适用于我的案例
从另一个项目导入 .proto 文件 https://stackoverflow.com/questions/59422186/importing-proto-files-from-another-project/59821705#59821705
好吧,我终于解决了这个问题。 @DazWilkin 也指出了这一点。
- 您不能在中使用相对路径
import
,所以你应该使用项目的绝对路径。就我而言,是:import "Common/common.proto"
- 使用项目根目录作为 proto 文件的位置。所以而不是
ProtoRoot="..\Protos\Common\"
use ProtoRoot="../Protos/"
现在有趣的部分来了。
由于某种原因,当我使用反斜杠作为 ProtoRoot 路径时"..\Protos\
我收到“文件未找到”错误。所以don't使用反斜杠作为路径。
CarMicroservice.csproj中的最终代码如下:
<Protobuf Include="Common/common.proto" ProtoRoot="../Protos/" />
<Protobuf Include="Vehicle/car.proto" ProtoRoot="../Protos/" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)