5
votes

IAsyncEnumerable <> cassé dans VS 2019 aperçu 2 (Core 3.0 aperçu 1)

Après avoir installé VS 2019 preview 2, j'obtiens un grand nombre d'erreurs. Code de démonstration d'erreur:

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

et rien de plus (un nouveau projet dll)!
Avec l'aperçu 1, c'était ok.

Le projet:

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

Le message d'erreur est: Erreur CS0656 Membre requis du compilateur manquant 'System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator'

Le navigateur d'objets affiche le membre dans Collections.Generic.

Des idées? En attente de l'aperçu 2 de Core 3.0?

Quelque chose comme dans IAsyncEnumerable ne fonctionne pas dans Aperçu C # 8.0 ?

Un autre problème avec VS 2019 P2 (un autre projet): Nullabilty warnings si la ligne NullableReferenceTypes est là (dans vs 19, l'aperçu 1 était ok):

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

L'avertissement:
Avertissement CS8632 L'annotation pour les types de référence Nullable ne doit être utilisée que dans le code dans un contexte '#nullable'.
La configuration du projet ne suffit-elle pas? n'est plus mondial?


3 commentaires

Oui, c'est cassé pour le moment et ça sera corrigé. Voir "modifications depuis l'aperçu 1" dans Le blog de Mads , qui mentionne les deux problèmes.


Maintenant, qui a voté pour clore cette question? C'est certainement reproductible et officiellement reconnu


C'est certainement un "quelque chose comme ce cas" mais vous ne pouvez pas simplement ajouter les classes manquantes cette fois. IAsyncEnumerable existe mais les méthodes sont différentes. Vous ne pouvez pas le simuler avec une méthode d'extension et tout test technique qui injecterait la méthode manquante n'en vaut pas la peine. Vous devrez utiliser une version quotidienne ou attendre le Core 3.0 Preview 2. OTOH, étant donné la volatilité de ces aperçus, pourrait tout aussi bien utiliser les quotidiens


3 Réponses :


3
votes

Remplacement

true

Avec

activer

Correction de mes problèmes avec les types de référence Nullable.

< EDIT:

Cela peut valoir la peine d'avoir les deux options dans le fichier .csproj car les images dotnet Docker n'ont pas encore été mises à jour et échoueront car elles ne reconnaissent pas la nouvelle balise de type de référence Nullable


0 commentaires

8
votes

Problème 1

Membre requis du compilateur manquant 'System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator'

Solution

Installez .NET Core v3.0.100-preview-010177

https://github.com/dotnet/core-sdk#installers -et-binaires

Explication

Il y a eu un changement radical dans IAsyncEnumerable de .NET Core 3 Preview 1 à .NET Core Preview 2

Flux asynchrones

Nous avons changé la forme de l'interface IAsyncEnumerable attendue par le compilateur! Cela désynchronise le compilateur avec l'interface fournie dans .NET Core 3.0 Preview 1, ce qui peut vous causer des problèmes. Cependant, .NET Core 3.0 Preview 2 est attendu sous peu, ce qui ramène les interfaces synchronisées.

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

Problème 2

L'annotation pour les types de référence Nullable ne doit être utilisée que dans le code dans un contexte '#nullable'

Solution

Changetrue

à

activer

Explication

Il s'agit d'un changement radical de VS2019 Preview 1 à VS2019 Preview 2.

Types de référence nulles

Nous avons ajouté plus d'options pour contrôler les avertissements Nullable à la fois dans la source (via les directives d'avertissement #nullable et #pragma) et au niveau du projet. Nous avons également modifié la désactivation du fichier projet pour l'activer.

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


5 commentaires

1000 merci! (i) votre réponse est logiquement claire et parfaitement structurée; (ii) c'est correct - vous m'avez sauvé.


Merci @ me-on-stov! N'oubliez pas de le marquer comme "Répondu" pour aider les développeurs à poser la même question à l'avenir 👍


.NET Core 3.0 Preview 2.0 vient de sortir


@BrandonMinnick Cela a-t-il été re-cassé dans l'aperçu 4, car j'ai ce problème aujourd'hui après la mise à niveau de l'aperçu 3 à 4?


Salut @PaulManzotti! Puisque la question originale de @ me-on-stov est centrée sur l'aperçu 2, allez-y et ouvrez une nouvelle question pour l'aperçu 4 et partagez le lien ci-dessous 👍



0
votes

Dans Visual Studio 16.2, le nom de la propriété a été remplacé par Nullable , ce qui est plus simple et s'aligne sur l'argument de ligne de commande.

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


0 commentaires