如何将共享的proto文件导入到本地?

问题描述 投票:0回答:2

我有项目Protobuf.Shared,其中包含共享原型文件。该项目打包到 NuGet 包中

项目结构:

- .nuspec
- proto
 - shared.proto
 - base.proto
- Dummy.cs

我还有项目 Protobuf.Server,它使用 Protobuf.Shared NuGet 包,并且还包含自己的原型文件。

项目结构:

- proto
 - server.proto
- Dummy.cs

我成功导入了共享原型文件,它们在构建操作期间被正确编译。在 Dummy.cs 中,我可以使用生成的消息类。

问题

当我想将shared.proto(从Protobuf.Shared)导入到server.proto时,构建操作失败,并出现找不到shared.proto的错误。 在这种情况下如何正确导入 proto 以获得成功的项目构建? 要求通过 NuGet 包使用共享原型。

我在 GitHub 上制作了一个带有自述文件的 示例,以节省您的时间。

我想要实现的server.proto结果:

syntax = "proto3"; package server; option csharp_namespace = "Protobuf.Server"; // Import shared.proto somehow import "shared.proto"; //import "1.0.0/shared.proto"; message SomeMessage { int32 Amount = 1; //shared.Name name = 2; }
    
c# .net protocol-buffers proto
2个回答
0
投票
当我下载并检查代码时,没有选择“Protobuf.Shared”项目中“shared.proto”文件的生成类型,当我将其设为“客户端和服务器”并创建和更新nuget包时,问题解决了。

我将其添加到“protobuf.Shared.csproj”中

<ItemGroup> <Protobuf Update="proto\shared.proto" GrpcServices="Both" /> </ItemGroup>
您也可以在“shared.proto”文件的属性中执行此操作。

我还向存储库发送了拉取请求。


0
投票
就我而言,我修复了此错误,在 .csproj 文件中添加了这一行:

<PropertyGroup> <Protobuf_ProtoRoot>Protos</Protobuf_ProtoRoot> <Protobuf_StandardImportsPath>$(Protobuf_StandardImportsPath);Protos</Protobuf_StandardImportsPath> </PropertyGroup>
    
© www.soinside.com 2019 - 2024. All rights reserved.