web-dev-qa-db-fra.com

«Le type prédéfini System.ValueTuple n'est pas défini ou importé» après la mise à niveau vers .NET 4.7

Je mets à niveau une solution existante de .NET 4.6.2 vers .NET 4.7. Cette solution dépend de plusieurs packages de nuget qui ciblent .NET 4.6.2 et dépendent donc du package nuget System.ValueTuple .

Mais après la mise à niveau, je reçois un tas de ces erreurs de construction:

Error CS8179 Predefined type 'System.ValueTuple`2' is not defined or imported

Je ne peux pas supprimer le System.ValueTuple package, comme suggéré dans les commentaires ici , car d'autres packages en dépendent. (Et si je le force, ils semblent exploser.)

Aucune suggestion?

Mise à jour 8/8/17

J'ai compris que je peux supprimer le System.ValueTuple package, et je peux obtenir la solution pour compiler de cette façon. Cependant, j'ai une douzaine de packages NuGet dans la solution qui semblent cibler .NET 4.6.2 et nécessitent donc System.ValueTuple comme dépendance. Je peux les installer, puis forcer la suppression du System.ValueTuple package, mais si l'un de ces packages contient une mise à jour, et j'installe la mise à jour - alors le System.ValueTuple le package est réinstallé et le système cesse de se construire jusqu'à ce que je retire le package.

En d'autres termes, je peux tout faire fonctionner - mais cela semble maladroit et maladroit. Il y a sûrement une meilleure façon d'aborder cela?

21
Ken Smith

Dans Visual Studion, le package NuGet System.ValueTuple fournit les types ValueTuple. Mettez donc à jour System.ValueTuple vers la dernière version v4.4.0. Signifie Mettre à niveau System.ValueTuple vers une version supérieure à la version actuelle ou précédente.

4