我使用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>
它应该在原始文件更改时生成服务器端文件,但它永远不会生成这些文件。怎么了?
答案 0 :(得分:1)
它实际上有效。这些文件是在obj目录而不是Services目录中生成的。如果我确实显示所有文件,则可以看到它们。