如何在 C# 中为 gRPC 创建适当的自动生成代码?
How to create proper autogenerated code in C# for gRPC?
我在 C# 项目中创建了一个原型文件,并尝试通过构建解决方案来自动生成 C# 代码。
但是,扩展名 grpc.cs.
下的文件有问题
'''
/// <summary>Creates a new client for Greeter</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
public GreeterClient(grpc::Channel channel) : base(channel)
{
}
'''
上面的片段来自示例,其中 public GreeterClient 具有参数 (grpc::Channel channel)
但在下面的片段中,它是 (grpc::ChannelBase channel)
'''
/// <summary>Creates a new client for samples</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
public samplesClient(grpc::ChannelBase channel) : base(channel)
{
}
'''
这会引发错误,提示 '无法找到客户端通道
如何配置和生成grpc.cs文件以便参数是(grpc: :频道频道)
我不确定你在做什么(...试图自动生成...<- 你是说你手动 运行 协议?为什么?)
这是 .NET Framework 项目的示例,创建的 .NET Core 略有不同 - 这是 .NET Core 入门的绝佳资源:ASP.NET Core gRPC for WCF Developers
通常你做什么
- 创建项目并安装相关的 Nuget 包:
Grpc
、Grpc.Core
以及最重要的 Grpc.Tools
包
- 添加新文件。随便命名,但扩展名必须是
.proto
- 在此原型文件中填充一些数据,例如:
syntax = "proto3";
option csharp_namespace = "MyNamespace";
...
...
- 鼠标右键点击这个文件然后select
Properties
- 在 'Properties' 面板中 select
Protobuf
作为 Build action
。所以它应该是这样的:
- 重建解决方案
- 添加另一个 C# 文件,任意命名
- 在此 C# 文件中开始引用您在
proto
文件中创建的结构。喜欢:
MyNamespace.MyServer server = new MyNamespace.MyServer()
但实际上你应该像这样从 ptotobuf
为你创建的基础 class 继承:
public class GrpcImplementationClass: MyNamespace.MyServer.MyServerBase
{
public override MyFunction()
{
...
...
P.S。 Youtube
上有很多初学者教程
我在 C# 项目中创建了一个原型文件,并尝试通过构建解决方案来自动生成 C# 代码。 但是,扩展名 grpc.cs.
下的文件有问题'''
/// <summary>Creates a new client for Greeter</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
public GreeterClient(grpc::Channel channel) : base(channel)
{
}
'''
上面的片段来自示例,其中 public GreeterClient 具有参数 (grpc::Channel channel) 但在下面的片段中,它是 (grpc::ChannelBase channel)
'''
/// <summary>Creates a new client for samples</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
public samplesClient(grpc::ChannelBase channel) : base(channel)
{
}
'''
这会引发错误,提示 '无法找到客户端通道
如何配置和生成grpc.cs文件以便参数是(grpc: :频道频道)
我不确定你在做什么(...试图自动生成...<- 你是说你手动 运行 协议?为什么?)
这是 .NET Framework 项目的示例,创建的 .NET Core 略有不同 - 这是 .NET Core 入门的绝佳资源:ASP.NET Core gRPC for WCF Developers
通常你做什么
- 创建项目并安装相关的 Nuget 包:
Grpc
、Grpc.Core
以及最重要的Grpc.Tools
包 - 添加新文件。随便命名,但扩展名必须是
.proto
- 在此原型文件中填充一些数据,例如:
syntax = "proto3";
option csharp_namespace = "MyNamespace";
...
...
- 鼠标右键点击这个文件然后select
Properties
- 在 'Properties' 面板中 select
Protobuf
作为Build action
。所以它应该是这样的:
- 重建解决方案
- 添加另一个 C# 文件,任意命名
- 在此 C# 文件中开始引用您在
proto
文件中创建的结构。喜欢:
MyNamespace.MyServer server = new MyNamespace.MyServer()
但实际上你应该像这样从 ptotobuf
为你创建的基础 class 继承:
public class GrpcImplementationClass: MyNamespace.MyServer.MyServerBase
{
public override MyFunction()
{
...
...
P.S。 Youtube
上有很多初学者教程