gpt4 book ai didi

c# - VS 2019中如何在非grpc服务项目中添加proto文件

转载 作者:行者123 更新时间:2023-12-05 01:23:22 27 4
gpt4 key购买 nike

在 grpc 服务项目中,当我添加一个新的项目/文件时,我可以选择文件类型为“Protocol Buffer File”,“Build Action”(在文件属性中)为“Protobuf compiler”

但是当我有一个非 grpc 服务项目(比如类库)时,在添加新文件时没有我可以选择的“ Protocol Buffer 文件”类型。即使我创建了一个带有 .proto ext 的文件,在“Build Action”中也没有“Protobuf compiler”我可以选择。

有什么方法可以在非 grpc 服务项目中添加 proto 文件,或者我只能手动编辑项目 .csproj(我的意思是将有关 proto 文件的 xml 节点从 grpc 服务项目复制到非grpc服务项目)?

最佳答案

你想做的事都是可能的。

您提到的“Protobuf 编译器”选项来自 Grpc.Tools Nuget Package ,它使用 protobuf compiler protoc生成 C# 代码。当你构建一个项目并且你想在构建过程中从 protobuf 文件生成代码隐藏文件时,你需要这个包或像 Grpc.AspNetCore 这样的元包。在项目中持有对它的引用。如果您设置了“Protobuf 编译器”选项,则在构建协议(protocol)期间构建代码隐藏文件。正如您所说,在默认的“ASP.NET Core gRPC 服务”项目中,您有“Protobuf 编译器”选项,这是因为它默认安装了 Grpc.AspNetCore nuget 包。编辑:如 kzfid 所述,需要包 Google.Protobuf 来编译由 protoc 生成的 C# 代码。


因此,简而言之,您需要做的是:1. 在您想要“Protobuf 编译器”选项的项目中添加必要的 nuget 包,以及 2. 如果协议(protocol)文件位于与所在项目不同的项目中你想生成 C# 代码,你必须添加项目引用

<强>1。安装所需的 Nuget 包

在您想要从 protoc 文件创建代码隐藏 c# 文件的任何项目中(并且具有用于 protoc 文件的“Protobuf 编译器”选项),您应该安装以下 nuget 包:

Grpc.Tools
Google.Protobuf

或者像 Grpc.AspNetCore 这样引用它们的包。通过添加这些包,您将拥有适用于所有原型(prototype)文件的“Protobuf 编译器”选项,即使它们是从不同的项目(如共享类库)引用的。

<强>2。为 proto 文件添加项目引用

如果您有一个项目,您希望在其中为 proto 文件创建代码隐藏文件,但 *.proto 文件位于不同的项目中,您必须添加一个引用。例如,如果在名为 Shared 的共享类库中名为 Protos 的命名空间中有一个 connections.proto 文件,我想使用在名为 Client 的客户端项目中生成的代码,我必须在客户端项目中安装上面提到的 nuget 包,在客户端项目中为共享类库添加项目引用,并在客户端.csproj:

<ItemGroup>
<Protobuf Include="..\Shared\Protos\connections.proto" GrpcServices="Client">
<Link>Protos\connections.proto</Link>
</Protobuf>
</ItemGroup>

现在有客户端项目中引用的 connections.proto 文件和它的“Protobuf 编译器”选项,但文件本身位于不同的项目(共享类库)中。

关于c# - VS 2019中如何在非grpc服务项目中添加proto文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72449390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com