114 votes

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

J'ai installé Visual Studio 2017 Community qui est sorti 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 Cannot define a class or member that utilizes tuples car le compilateur a exigé le type System.Runtime.CompilerServices.TupleElementNamesAttribute' est introuvable. trouvé. Une référence vous manque-t-elle ?

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

Si nous avons besoin de matériel supplémentaire pour utiliser les fonctionnalités de C# 7.0, il est très étrange que nous devions le faire pour chaque projet !

139voto

user3185569 Points 22924

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. Ajoutez une référence à la System.ValueTuple à partir de NuGet (pre-release)

enter image description here

En suivant ces étapes, cela fonctionne maintenant. Mais il est vraiment très bizarre que nous devions faire cela pour chaque projet que nous démarrons ! J'espère que cela sera corrigé lorsque nous atteindrons la version officielle !

74voto

aaaa bbbb Points 1487

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

Le ValueTuple est désormais inclus dans la version 4.7 de .Net, ce qui vous évite de devoir le référencer manuellement.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X