C#8.0是否支持IAsyncEnumerable?

mak*_*iuk 4 c# .net-standard-2.0

IAsyncEnumerable除了“ What's New c#8.0”文章中的一些提及之外,真的很难找到关于的任何信息。尝试在启用了netstandard 2.0和C#8的Visual Studio 2019中使用它,它的确可以识别该类,但是在构建时出现了很多错误:

在此处输入图片说明

AAA*_*ddd 6

C#8支持这些功能。但是,这不适用于.Net标准2.0

IAsyncEnumerable接口

适用于

.NET Core 3.0预览版3

.NET Standard 2.1预览

您将必须获得其中一个预览。

您可以在此处找到有关.Net Core 3 Preview的更多信息。

  • 因此,对于打算尝试此方法的任何人来说,请不要打扰,不幸的是,如果将Net Core 3.0和EntityframeworkCore一起使用,则将由于以下错误而无法工作:错误CS0433类型“ IAsyncEnumerable <T>”都存在'System.Interactive.Async,Version = 3.2.0.0,Culture = neutral,PublicKeyToken = 94bc3704cddfc263'和'System.Runtime,Version = 4.2.1.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'` (3认同)

Vla*_*lad 5

对于 .NET Standard 2.0,您应该安装 Microsoft.Bcl.AsyncInterfaces

https://www.nuget.org/packages/Microsoft.Bcl.AsyncInterfaces/


小智 5

弗拉德的答案是正确的。

  1. 将 LangVersion 8.0 添加到所需的 Projects PropertGroup
  2. 添加 Microsoft.Bcl.AsyncInterfaces 作为 PackageReference

例如:MyDummyLib.csproj

<PropertyGroup>
    <TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
    <LangVersion>8.0</LangVersion>
    <AssemblyName>MyDummyLib</AssemblyName>
    <RootNamespace>MyDummyLib</RootNamespace>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>

<ItemGroup Condition="'$(TargetFramework)'=='netstandard2.0'">
    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="1.1.1" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)