[英]Importing proto files from different directories
我正在努力為 grpc 導入編寫正確的配置。
所以 .net 解決方案結構如下:
\Protos\Common\common.proto
\Protos\車輛\car.proto
\汽車微服務
在 car.proto 里面我有: import "common.proto"
我想要的是生成的 grpc 代碼在項目CarMicroservice 中。
在 CarMicroservice.csproj 里面,我寫了原型的路徑:
<Protobuf Include="common.proto" ProtoRoot="..\Protos\Common\" />
<Protobuf Include="car.proto" ProtoRoot="..\Protos\Vehicle\" />
但出現錯誤:'common.proto' 沒有這樣的文件或目錄
問題是:如何在 car.proto 中正確導入 common.proto?
注意:我已經看過類似的問題,但無法使其適用於我的案例
從另一個項目導入.proto文件
好的,我終於解決了這個問題。 @DazWilkin 也指出了這一點。
import
中使用相對路徑,因此您應該使用項目的絕對路徑。 在我的例子中是: import "Common/common.proto"
ProtoRoot="..\Protos\Common\"
使用ProtoRoot="../Protos/"
"..\Protos\
<Protobuf Include="Common/common.proto" ProtoRoot="../Protos/" />
<Protobuf Include="Vehicle/car.proto" ProtoRoot="../Protos/" />
或者,還有其他兩種方法可以為protoc
指定包含目錄。
首先,有一個名為Protobuf_AdditionalImportsPath
的全局屬性。 如果您在.csproj
/ .fsproj
中指定此屬性,它將傳遞給該項目中每個.proto
的protoc
。 你可以像這樣使用它:
<PropertyGroup>
<Protobuf_AdditionalImportsPath>../../my/other/directory</Protobuf_AdditionalImportsPath>
</PropertyGroup>
還有一個AdditionalImportDirs
屬性,您可以直接在<Protobuf>
元素上指定。 這可能只對您指定的.proto
有效:
<Protobuf Include="MyProto.proto" Link="MyProto.proto" AdditionalImportDirs="../../my/other/directory" />
請記住,在這兩種情況下,您都可以指定您想要的任何目錄,而不管它是否是您正在編譯的.proto
的父目錄。
另請記住,您在.proto
中指定的導入路徑需要相對於您指定的導入目錄之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.