Asp.net core Protobuf不工作-Jetbrains Rider.NET Core 3.1

Asp.net core Protobuf不工作-Jetbrains Rider.NET Core 3.1,asp.net-core,jetbrains-ide,Asp.net Core,Jetbrains Ide,我正在尝试做一个简单的gRPC教程。最初,我从Jetbrains Rider开始创建一个新的gRPC服务,然后我为客户端创建了一个控制台应用程序,并安装了: Google.Protobuf - 3.11.4 Grpc.Net.Client - 2.28.0-pre2 Grpc.Tools - 2.28.0-pre3 它看起来不像是为greet.proto生成的代码,因为我得到了红色的波形var client=new Greeter.GreeterClient(通道) 然而,当我在VisualS

我正在尝试做一个简单的gRPC教程。最初,我从Jetbrains Rider开始创建一个新的gRPC服务,然后我为客户端创建了一个控制台应用程序,并安装了:

Google.Protobuf - 3.11.4
Grpc.Net.Client - 2.28.0-pre2
Grpc.Tools - 2.28.0-pre3
它看起来不像是为
greet.proto
生成的代码,因为我得到了红色的波形
var client=new Greeter.GreeterClient(通道)

然而,当我在VisualStudio中打开项目时,一切似乎都正常。我是不是错过了一个插件或者什么

我的
csproj

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

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="Google.Protobuf" Version="3.11.4" />
      <PackageReference Include="Grpc.Net.Client" Version="2.28.0-pre2" />
      <PackageReference Include="Grpc.Tools" Version="2.28.0-pre3" />
    </ItemGroup>

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto">
        <GrpcServices>Client</GrpcServices>
        <OutputDir>obj\Debug\netcoreapp3.1\</OutputDir>
        <Access>Public</Access>
        <ProtoCompile>True</ProtoCompile>
        <ProtoRoot></ProtoRoot>
        <CompileOutputs>True</CompileOutputs>
        <Generator>MSBuild:Compile</Generator>
      </Protobuf>
    </ItemGroup>

</Project>

Exe
netcoreapp3.1
客户
obj\Debug\netcoreapp3.1\
公开的
真的
真的
MSBuild:编译
如果它在Rider中编译(编译的文件应该在文件夹
obj/Debug/[您的netcore目标]/
),那么您已经正确设置了它并且它可以工作(=它编译)。“Only”Rider很难找到编译类(在Rider 2019.3.4 build 193.6494.48中测试)

这似乎是Rider中的一个bug(请参阅或),它是由混合NuGet版本引起的

确保解决方案中的所有其他项目使用相同版本的gRPC相关LIB

我成功地将其设置为以下版本(针对netcoreapp3.0):

我的服务器应用程序:

<PackageReference Include="Grpc.AspNetCore" Version="2.27.0" />

我的客户端应用程序

<PackageReference Include="Google.Protobuf" Version="3.11.2" />
<PackageReference Include="Grpc.Net.Client" Version="2.25.0" />
<PackageReference Include="Grpc.Tools" Version="2.27.0">
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  <PrivateAssets>all</PrivateAssets>
</PackageReference>

运行时间;建设;本地人;内容文件;分析仪;可传递的
全部的
注意版本2.27.0中的Grpc.AspNetCore包含对Google.Protobuf 3.11.2和Grpc.Tools 2.27.0的引用。所以我不能在我的客户端项目中使用不同的版本。或者我可以,它会编译,但Rider找不到文件

简单地说,确保解决方案中所有项目中所有与gRPC相关的NUGET使用完全相同的版本,包括引用的NUGET(由您明确使用的NUGET引用)

希望它有帮助

如果它在Rider中编译(编译的文件应该在文件夹
obj/Debug/[您的netcore目标]/
中),那么您已经正确设置了它,并且它可以工作(=它编译)。“Only”Rider很难找到编译类(在Rider 2019.3.4 build 193.6494.48中测试)

这似乎是Rider中的一个bug(请参阅或),它是由混合NuGet版本引起的

确保解决方案中的所有其他项目使用相同版本的gRPC相关LIB

我成功地将其设置为以下版本(针对netcoreapp3.0):

我的服务器应用程序:

<PackageReference Include="Grpc.AspNetCore" Version="2.27.0" />

我的客户端应用程序

<PackageReference Include="Google.Protobuf" Version="3.11.2" />
<PackageReference Include="Grpc.Net.Client" Version="2.25.0" />
<PackageReference Include="Grpc.Tools" Version="2.27.0">
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  <PrivateAssets>all</PrivateAssets>
</PackageReference>

运行时间;建设;本地人;内容文件;分析仪;可传递的
全部的
注意版本2.27.0中的Grpc.AspNetCore包含对Google.Protobuf 3.11.2和Grpc.Tools 2.27.0的引用。所以我不能在我的客户端项目中使用不同的版本。或者我可以,它会编译,但Rider找不到文件

简单地说,确保解决方案中所有项目中所有与gRPC相关的NUGET使用完全相同的版本,包括引用的NUGET(由您明确使用的NUGET引用)


希望有帮助

尝试删除projects obj目录,然后重新加载解决方案。

尝试删除projects obj目录,然后重新加载解决方案