NuGet包中proto文件的csproj路径配置及跨项目引用问题
NuGet包中Proto文件的项目配置与引用方法
一、在csproj中指定NuGet包内Proto文件的路径
当你安装了包含lib/protos目录的NuGet包后,MSBuild会自动生成一个以Pkg开头的属性,指向该包的本地安装目录。你需要将代码中的$(???)替换为$(Pkg<你的NuGet包名>)——注意包名中的点号会被替换为下划线,比如包名为My.Proto.Package时,对应属性是$(PkgMy_Proto_Package)。
具体csproj配置示例
如果使用Google.Protobuf的MSBuild工具链,可在项目文件中添加如下配置:
<ItemGroup> <!-- 可选:若需要将NuGet包中的Proto文件纳入当前项目的编译流程 --> <Protobuf Include="$(PkgMy_Proto_Package)/lib/protos/**/*.proto" /> <!-- 核心配置:将NuGet包的protos目录添加为Proto文件的导入搜索路径 --> <Protobuf AdditionalImportDirs="$(PkgMy_Proto_Package)/lib/protos" /> </ItemGroup>
二、当前项目Proto文件引用NuGet包中的Proto文件
在你项目的.proto文件里,直接通过import语句引用NuGet包内的文件即可,路径使用NuGet包lib/protos目录下的相对结构。
示例
假设NuGet包的lib/protos/common目录下有base.proto文件,你的项目Proto文件可这样引用:
import "common/base.proto"; // 自定义Proto定义内容 message MyMessage { // 可以使用base.proto中定义的类型 common.BaseType base_field = 1; }
内容的提问来源于stack exchange,提问作者A_M
相关产品推荐
相关产品推荐

