第19篇 Protocol Buffers 编译器生成proto文件

news/2024/10/4 1:27:31

1.下载 Protocol Buffers 编译器(protoc)

前往 Protocol Buffers GitHub Releases 页面。在 "Assets" 下找到适合您系统的压缩文件,通常为 protoc-{version}-win32.zip 或 protoc-{version}-win64.zip,其中 {version} 是版本号。

image

2.解压缩 Protoc 编译器

创建一个空文件夹,用于存放 protoc 编译器,将下载的压缩文件解压到该文件夹。找到 bin 文件所在目录,将路径复制下来。
image

3.设置环境变量

鼠标点击桌面左下角的搜索框,然后输入“环境变量”,搜索出来后双击鼠标点进去。
在弹出的窗口中选择“高级->环境变量”按钮。在“用户变量”里找到 path,双击打开。
点击“新建”并添加 protoc 编译器的路径,将刚才下载地址的 bin 路径粘贴进去即可。
image

4.验证安装

我们现在打开控制台看一下变量是否配置成功,Win+R然后输入 cmd,在命令行中运行命令protoc --version,如果看到版本信息,说明配置成功。
image

5.使用 protoc 编译 .proto 文件 转成C#,.cs文件

  1. 检查 .NET SDK 安装

     dotnet --version
    
  2. 重新安装 gRPC C# 工具,先执行卸载,再装

     dotnet tool uninstall -g dotnet-grpcdotnet tool install -g dotnet-grpc
    

image

  1. 手动下载和安装【如果以上步骤无法安装】
    如果通过 dotnet tool install 命令无法安装 grpc_csharp_plugin.exe,你可以尝试手动下载和安装。

访问 gRPC GitHub 仓库。
导航到 grpc/src/csharp/Grpc.Tools 目录。
下载适用于你操作系统的 Grpc.Tools 包。

  1. 手动安装
    解压下载的 Grpc.Tools 包。
    将解压后的文件夹中的 tools 目录复制到你希望安装插件的位置。
    将插件路径添加到系统的 PATH 环境变量中。

  2. 检查环境变量
    确保 grpc_csharp_plugin.exe 的路径已添加到系统的 PATH 环境变量中。你可以通过以下步骤检查和配置环境变量:

Windows
右键点击“此电脑”或“计算机”,选择“属性”。
点击“高级系统设置”。
在“系统属性”窗口中,点击“环境变量”按钮。
在“系统变量”部分,找到并选择 Path 变量,然后点击“编辑”。
确保 C:\Users<YourUsername>.dotnet\tools 路径已添加到 Path 变量中。如果没有,请点击“新建”并添加该路径。

Linux/macOS
打开终端。
编辑 ~/.bashrc 或 ~/.zshrc 文件,添加以下行:

	export PATH="$PATH:$HOME/.dotnet/tools"

保存文件并运行以下命令使更改生效:

source ~/.bashrc

source ~/.zshrc
  1. 使用绝对路径
    如果你找到了 grpc_csharp_plugin.exe 的路径,可以使用绝对路径来运行 protoc 命令:

example.proto文件内容
image

生成C#类文件的命令:

	protoc --proto_path=D:\Project\GrpcServiceDemo\protocolbuffers\protos --csharp_out=D:\Project\GrpcServiceDemo\protocolbuffers\codes --grpc_out=D:\Project\GrpcServiceDemo\protocolbuffers\codes --plugin=protoc-gen-grpc=D:\Project\GrpcServiceDemo\protocolbuffers\tools\windows_x64\grpc_csharp_plugin.exe example.proto

执行成功后,会生成这两个文件:
image

6.如果通过git仓库代码无法找到插件grpc_csharp_plugin.exe ,可以通过以下方式

  1. 手动下载
    访问 NuGet 官方网站。
    搜索 Grpc.Tools 包。
    下载适用于你操作系统的包(例如 Grpc.Tools.2.41.0.nupkg)。

  2. 解压 Grpc.Tools 包
    下载完成后,解压 Grpc.Tools 包。你可以使用以下命令解压 .nupkg 文件:

     mkdir Grpc.Toolsunzip Grpc.Tools.2.41.0.nupkg -d Grpc.Tools
    
  3. 配置环境变量
    将 grpc_csharp_plugin.exe 的路径添加到系统的 PATH 环境变量中。

Windows
右键点击“此电脑”或“计算机”,选择“属性”。
点击“高级系统设置”。
在“系统属性”窗口中,点击“环境变量”按钮。
在“系统变量”部分,找到并选择 Path 变量,然后点击“编辑”。
确保 Grpc.Tools/tools/windows_x64 路径已添加到 Path 变量中。如果没有,请点击“新建”并添加该路径。
image

Linux/macOS
打开终端。
编辑 ~/.bashrc 或 ~/.zshrc 文件,添加以下行:

export PATH="$PATH:/path/to/Grpc.Tools/tools/linux_x64"

export PATH="$PATH:/path/to/Grpc.Tools/tools/macosx_x64"

保存文件并运行以下命令使更改生效:

source ~/.bashrc

source ~/.zshrc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/58147.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Zlibrary镜像站官方网址的使用教程

Zlibrary的使用说明: 手机端 步骤一、以苹果浏览器为例,打开Z-library镜像站,搜索自己的图书,注册登录之后选择EPUB格式下载步骤二、手机打开下载的文件,即可正常阅读。电脑端 步骤一,如下图所示, 打开Zlibrary官网搜索电子书,点击自己需要的图书步骤二,如下图所示, 在…

Python实现批量提取视频

前言 最近在玩整nas,但是之前把视频和照片都上传到immich了,因为我可以直接在手机中上传照片,但是因为手机内存不够就把视频全删了的,现在只需要把视频下载下来上传到nas中就OK。但是现在问题是immich这东西不支持批量删选视频,只能全选照片和视频,而且一共有50个G的照片…

边缘计算平台:为客户端提供更快、更可靠的应用响应!

边缘计算平台是一种基于云计算技术的辅助计算系统。它可以在数据源的边缘(例如传感器、IoT设备等)进行数据的处理和分析,从而为客户端提供更快、更可靠的应用响应。与传统的云计算模式相比,边缘计算平台更加灵活和实时,它通过在分布式的边缘设备上进行计算,可以大大减少由…

1-9Java数组

Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。 Java 语言中提供的数组是用来存储固定大小的同类型元素。 你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,numbe…

VR虚拟现实解决方案在电商行业中的7大优势

从电子商务的角度来看,虚拟现实可以通过多种方式为在线卖家带来好处。VR 可带来身临其境、富有创意且令人难忘的客户体验,可以极大地提高转化率。VR 可以通过更多方式使卖家受益。从电子商务的角度来看,虚拟现实可以通过多种方式为在线卖家带来好处。VR 可带来身临其境、富有…

Mathematica 入门

前言 Wolfram Mathematica(简称 MMA),是由 Wolfram Research 开发的科学计算软件。本文我们将介绍 Mathematica 的界面、语法和基本应用。类似的软件还有 MATLAB 和 Maple 等。 MMA 官网:https://www.wolfram.com/mathematica/ MMA 的安装及激活:Mathematica安装激活极简教…

【算法笔记】位运算详解

0. 前言 突然想到位运算是个好东西,就来水一波文章了…… 注意:我把能想到的有关位运算的所有内容都放进来了,所以篇幅较长,请谅解!若有写的不清楚或者不够详细的地方欢迎在评论区补充,谢谢支持! 本文中参考代码均使用C++编写。 废话不多说,下面步入正题。1. 基本运算 …

【算法笔记】【专题】RMQ 问题:ST表/树状数组/线段树

0. 前言 好久没更算法笔记专栏了,正好学了新算法来更新…… 这也是本专栏的第一个专题问题,涉及到三种数据结构,如果写得有问题请各位大佬多多指教,谢谢! 1. 关于 RMQ 问题 RMQ 的全称是 Range Minimum/Maximum Query,即区间最大/最小值问题。 本文中,我们的算法以求最大…