Visual Studio 2019 .NET Core 3 gRpc无法生成服务文件

时间:2019-11-15 21:08:54

标签: asp.net-core grpc visual-studio-2019 asp.net-core-3.0

我使用Visual Studio 2019中的模板创建了一个简单的gRpc服务器应用程序。然后我为服务器创建了一个protobuf文件,但无法获取它来生成相应的服务文件。

protobuf文件为:

syntax = "proto3";

option csharp_namespace = "RpcApi";
import "google/protobuf/timestamp.proto";

package API;

service Conferences {
    rpc GetAll (GetAllConferencesRequest) returns (GetAllConferencesResponse) {}
    rpc Add (AddConferenceRequest) returns (AddConferenceResponse) {}
}

message GetAllConferencesRequest {}

message GetAllConferencesResponse {
    repeated Conference Conferences = 1;
}

message AddConferenceRequest {
    Conference conferernce = 1;
}

message AddConferenceResponse {
    Conference conference = 1;
}

message Conference {
        int32 Id = 1;
        string Name = 2;
        google.protobuf.Timestamp Start = 3;
        string Location = 4;
        int32 AttendeeTotal = 5;
}

service Proposals {
    rpc GetAll (GetAllProposalsRequest) returns (GetAllProposalsResponse) {}
    rpc Add (AddProposalRequest) returns (AddProposalResponse) {}
    rpc Approve (ApproveRequest) returns (ApproveResponse) {}
}

message GetAllProposalsRequest {
    int32 ConferenceId = 1;
}

message GetAllProposalsResponse {
    repeated Proposal Proposals = 1;
}

message AddProposalRequest {
    Proposal Proposal = 1;
}

message AddProposalResponse {
    Proposal Proposal = 1;
}

message ApproveRequest {
    int32 Id = 1;
}

message ApproveResponse {
    Proposal Proposal = 1;
}
message Proposal {
    int32 Id = 1;
    int32 ConferenceId = 2;
    string Speaker = 3;
    string Title = 4;
     bool Approved = 5;
}

正确定义了项目文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Protobuf Include="Protos\rpcapi.proto" GrpcServices="Server" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Grpc.AspNetCore" Version="2.23.1" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Services\" />
  </ItemGroup>



</Project>

它应该在原始文件更改时生成服务器端文件,但它永远不会生成这些文件。怎么了?

1 个答案:

答案 0 :(得分:1)

它实际上有效。这些文件是在obj目录而不是Services目录中生成的。如果我确实显示所有文件,则可以看到它们。