web-dev-qa-db-fra.com

Impossible de renvoyer Tuple à partir d'une méthode utilisant Visual Studio 2017 et C # 7.0

J'ai installé Visual Studio 2017 Community, publié il y a une semaine, et j'ai commencé à explorer les nouvelles fonctionnalités de C # 7.

J'ai donc créé une méthode simple qui renvoie deux valeurs:

public class Program
{
    public static void Main(string[] args)
    {
        (int sum, int count) a = ReturnTwoValues();
    }

    static (int sum, int count) ReturnTwoValues() => (1, 1);
}

Le compilateur génère une erreur:

Erreur CS8137 Impossible de définir une classe ou un membre utilisant des nuplets, car le compilateur requis est de type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' introuvable. Vous manque une référence?

J'ai essayé de trouver une référence dans le cadre avec ce nom, mais sans succès!

Si nous avons besoin de choses supplémentaires pour utiliser les fonctionnalités de C # 7.0, il est très étrange de devoir le faire pour chaque projet?!

84
Zein Makki

Je viens de parcourir cette page sur Roslyn qui décrit les étapes suivantes pour que cela fonctionne:

  1. Démarrer un projet C #
  2. Ajouter une référence à la System.ValueTuple package de NuGet (pré-version)

enter image description here

En suivant ces étapes, cela fonctionne maintenant. Mais il est vraiment très étrange que nous devions le faire pour chaque projet que nous commençons! J'espère que cela sera corrigé lorsque nous aurons atteint la version officielle!

124
Zein Makki

J'ai commencé à avoir cette erreur après avoir installé .Net 4.7 Framework et modifié mon projet pour cibler .Net 4.7

ValueTuple est maintenant inclus dans .NET 4.7, vous n’avez donc pas à référencer manuellement ValueTuple.

Tout ce que je devais faire pour corriger l'erreur de compilation était de supprimer la référence à System.ValueTuple des références de mon projet.

42
aaaa bbbb