gpt4 book ai didi

c# - proto 文件中定义的消息在最终的 dotnet 程序集中不可用

转载 作者:行者123 更新时间:2023-12-04 04:22:51 25 4
gpt4 key购买 nike

我正在为 gRPC 使用 dotnet 标准 2.0 (Visual Studio 2017)。这就是我的整个项目的样子:
My whole project with 2 proto files
Messages.proto

syntax = "proto3";
package Messages;

message IdRequest{
int32 id = 1;
}

message NameResponse{
string name=1;
}
messages.proto file properties
名称.proto
syntax = "proto3";
package Services;

import public "proto/messages.proto";

service NameService{
rpc GetNameById(Messages.IdRequest) returns (Messages.NameResponse);
}
name.proto file properties
Common.proj
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<None Remove="proto\messages.proto" />
<None Remove="proto\name.proto" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.10.1" />
<PackageReference Include="Grpc" Version="2.24.0" />
<PackageReference Include="Grpc.Core" Version="2.24.0" />
<PackageReference Include="Grpc.Tools" Version="2.24.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<Protobuf Include="proto\messages.proto" />
<Protobuf Include="proto\name.proto" />
</ItemGroup>

</Project>
该项目成功构建,但是最终的 Common.dll 没有 Messages 命名空间,我无法真正引用 IdRequest 或 NameResponse。
Object Browser VS2017
那么我在哪里犯了隐藏消息命名空间的错误?

最佳答案

在您的项目文件到 Protobuf-tag 中,您需要添加 GrpcServices 属性,否则不会创建代码:

  <ItemGroup>
<Protobuf Include="proto\messages.proto" GrpcServices="Server" />
<Protobuf Include="proto\name.proto" GrpcServices="Server" />
</ItemGroup>

关于c# - proto 文件中定义的消息在最终的 dotnet 程序集中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58669740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com