我有一个简单的.NET 6控制台应用程序,我试图在其中从grpc proto文件生成c#代码。项目文件如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.21.9" />
<PackageReference Include="Grpc.Net.Client" Version="2.49.0" />
<PackageReference Include="Grpc.Tools" Version="2.50.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
我还有一个简单的proto文件,如下所示:
syntax = "proto3";
option csharp_namespace = "GrpcGreeter";
package greet;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply);
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings.
message HelloReply {
string message = 1;
}
关于proto文件,当我右击这个文件的属性时,一切看起来都很好:
然而,当我编译应用程序时,Greeter服务的GRPC类型应该会自动生成。然而,我发现生成的文件完全是空的。例如,生成了以下文件:
但它们完全是空文件。
我是不是漏掉了什么明显的步骤?
1条答案
按热度按时间huwehgph1#
我已经创建了一个控制台应用程序。当我创建一个ASP.NET核心gRPC服务时,它解决了这个问题。我仍然不知道为什么一个简单的控制台应用程序不能工作