通过 dotnet-grpc 管理 Protobuf 参考Manage Protobuf references with dotnet-grpc

本文内容

作者:John Luo

dotnet-grpc 是一种 .NET Core 全局工具,用于在 .NET gRPC 项目中管理 Protobuf (.proto ) 引用。该工具可以用于添加、刷新、删除和列出 Protobuf 引用。

安装Installation

若要安装 dotnet-grpc .NET Core 全局工具,请运行以下命令:

  1. dotnet tool install -g dotnet-grpc

添加引用Add references

dotnet-grpc 可以用于将 Protobuf 引用作为 <Protobuf /> 项添加到 .csproj 文件:

  1. <Protobuf Include="Protos\greet.proto" GrpcServices="Server" />

Protobuf 引用用于生成 C# 客户端和/或服务器资产。dotnet-grpc 工具可以:

  • 从磁盘上的本地文件创建 Protobuf 引用。
  • 从 URL 指定的远程文件创建 Protobuf 引用。
  • 确保将正确的 gRPC 包依赖项添加到项目。

例如,将 Grpc.AspNetCore 包添加到 Web 应用。Grpc.AspNetCore 包含 gRPC 服务器和客户端库以及工具支持。或者,将 Grpc.Net.ClientGrpc.ToolsGoogle.Protobuf 包(其中仅包含 gRPC 客户端库和工具支持)添加到控制台应用。

添加文件Add file

add-file 命令用于将磁盘上的本地文件添加为 Protobuf 引用。提供的文件路径:

  • 可以是当前目录的相对路径,也可以是绝对路径。
  • 可以包含用于基于模式的文件通配)的通配符。

如果任何文件处于项目目录之外,则会添加一个 Link 元素,以在 Visual Studio 中的文件夹 Protos 下显示该文件。

用法Usage

  1. dotnet grpc add-file [options] <files>...

自变量Arguments

参数描述
文件Protobuf 文件引用。这些可以是本地 protobuf 文件的 glob 的路径。

选项Options

短选项长选项描述
-p—project要操作的项目文件的路径。如果未指定文件,则该命令会在当前目录中搜索一个文件。
-S—services应生成的 gRPC 服务的类型。如果指定 Default,则 Both 用于 Web 项目,而 Client 用于非 Web 项目。接受的值包括 BothClientDefaultNoneServer
-o—additional-import-dirs解析 protobuf 文件的导入时要使用的其他目录。这是以分号分隔的路径列表。
—access要用于生成的 C# 类的访问修饰符。默认值为 Public接受的值为 InternalPublic

添加 URLAdd URL

add-url 命令用于将源 URL 指定的远程文件添加为 Protobuf 引用。必须提供文件路径才能指定下载远程文件的位置。文件路径可以是当前目录的相对路径,也可以是绝对路径。如果文件路径处于项目目录之外,则会添加一个 Link 元素,以在 Visual Studio 中的虚拟文件夹 Protos 下显示该文件。

用法Usage

  1. dotnet-grpc add-url [options] <url>

自变量Arguments

参数描述
URL远程 protobuf 文件的 URL。

选项Options

短选项长选项描述
-o—output指定远程 protobuf 文件的下载路径。这是必需选项。
-p—project要操作的项目文件的路径。如果未指定文件,则该命令会在当前目录中搜索一个文件。
-S—services应生成的 gRPC 服务的类型。如果指定 Default,则 Both 用于 Web 项目,而 Client 用于非 Web 项目。接受的值包括 BothClientDefaultNoneServer
-o—additional-import-dirs解析 protobuf 文件的导入时要使用的其他目录。这是以分号分隔的路径列表。
—access要用于生成的 C# 类的访问修饰符。默认值是 Public接受的值为 InternalPublic

删除Remove

remove 命令用于从 .csproj 文件中删除 Protobuf 引用。该命令接受路径参数和源 URL 作为参数。工具:

  • 仅删除 Protobuf 引用。
  • 不会删除 .proto 文件,即使它最初是从远程 URL 下载也是如此。

用法Usage

  1. dotnet-grpc remove [options] <references>...

自变量Arguments

参数描述
引用要删除的 protobuf 引用的 URL 或文件路径。

选项Options

短选项长选项描述
-p—project要操作的项目文件的路径。如果未指定文件,则该命令会在当前目录中搜索一个文件。

刷新Refresh

refresh 命令用于使用来自源 URL 的最新内容更新远程引用。下载文件路径和源 URL 都可以用于指定要更新的引用。注意:

  • 会比较文件内容的哈希,以确定是否应更新本地文件。
  • 不会比较时间戳信息。

如果需要更新,则该工具始终将本地文件替换为远程文件。

用法Usage

  1. dotnet-grpc refresh [options] [<references>...]

自变量Arguments

参数描述
引用应更新的远程 protobuf 引用的 URL 或文件路径。将此参数保留为空,以刷新所有远程引用。

选项Options

短选项长选项描述
-p—project要操作的项目文件的路径。如果未指定文件,则该命令会在当前目录中搜索一个文件。
—dry-run输出将更新的文件的列表,而不下载任何新内容。

列表List

list 命令用于显示项目文件中的所有 Protobuf 引用。如果某列的所有值都是默认值,则可以省略该列。

用法Usage

  1. dotnet-grpc list [options]

选项Options

短选项长选项描述
-p—project要操作的项目文件的路径。如果未指定文件,则该命令会在当前目录中搜索一个文件。

其他资源Additional resources