簡體   English   中英

在VS 2019預覽2中破壞了IAsyncEnumerable <>(Core 3.0預覽1)

[英]IAsyncEnumerable<> broken in VS 2019 preview 2 (Core 3.0 preview 1)

安裝VS 2019預覽2后,我收到很多錯誤。 錯誤演示代碼:

public class Class1 {
    public static async IAsyncEnumerable<int> Get()
    {
        for( int i = 0; i < 10; i++ ) {
            await Task.Delay( 100 );
            yield return i;
        }
    }
}

而且還有更多 (一個新的dll項目)!
預覽1還可以。

該項目:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <LangVersion>8.0</LangVersion>
  </PropertyGroup>
</Project>

錯誤消息是: 錯誤CS0656缺少編譯器所需的成員'System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator'

對象瀏覽器顯示Collections.Generic中的成員。

有任何想法嗎? 等待Core 3.0預覽版2?

IAsyncEnumerable中的某些東西在C#8.0預覽版不起作用

VS 2019 P2的另一個問題 (另一個項目):雖然NullableReferenceTypes行有Nullabilty警告(在vs 19中,預覽1沒問題):

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <LangVersion>8.0</LangVersion>
    **<NullableReferenceTypes>true</NullableReferenceTypes>**

警告:
警告CS8632可以為空的引用類型的注釋只應在'#nullable'上下文中的代碼中使用。
項目設置不夠嗎? 不再全球化?

問題1

缺少編譯器需要成員'System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator'

安裝.NET Core v3.0.100-preview-010177

https://github.com/dotnet/core-sdk#installers-and-binaries

說明

從.NET Core 3 Preview 1到.NET Core Preview 2的IAsyncEnumerable發生了重大變化

異步流

我們改變了編譯器期望的IAsyncEnumerable接口的形狀! 這使編譯器與.NET Core 3.0 Preview 1中提供的接口不同步,這可能會給您帶來一些麻煩。 但是,.NET Core 3.0 Preview 2即將發布,這將使接口重新同步。

資料來源: https//blogs.msdn.microsoft.com/dotnet/2019/01/24/do-more-with-patterns-in-c-8-0/

問題2

可以為空的引用類型的注釋只應在'#nullable'上下文中的代碼中使用

更改<NullableReferenceTypes>true</NullableReferenceTypes>

<NullableContextOptions>enable</NullableContextOptions>

說明

這是從VS2019預覽1到VS2019預覽2的重大變化。

可空的引用類型

我們在源代碼(通過#nullable和#pragma警告指令)和項目級別添加了更多選項來控制可空警告。 我們還更改了項目文件opt-in以啟用。

資料來源: https//blogs.msdn.microsoft.com/dotnet/2019/01/24/do-more-with-patterns-in-c-8-0/

更換

<NullableReferenceTypes>true</NullableReferenceTypes>

<NullableContextOptions>enable</NullableContextOptions>

修復了可空引用類型的問題。

編輯:

可能值得在.csproj文件中同時使用這兩個選項,因為dotnet Docker鏡像尚未更新並且將失敗,因為它無法識別新的可空引用類型標記

在Visual Studio 16.2中,屬性名稱更改為Nullable ,它更簡單並與命令行參數對齊。

<PropertyGroup>
  <LangVersion>8.0</LangVersion>
  <Nullable>enable</Nullable>
</PropertyGroup>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM