visual studio net microsoft cli c# .net nuget

c# - net - nuget visual studio 2015



"Tipo predefinido System.ValueTuple no está definido ni importado" después de actualizar a.NET 4.7 (2)

En Visual Studion, el paquete NuGet System.ValueTuple proporciona los tipos ValueTuple. Actualice System.ValueTuple a la última versión v4.4.0. Significa actualizar el System.ValueTuple a una versión más alta que la actual o la anterior.

Estoy actualizando una solución existente de .NET 4.6.2 a .NET 4.7. Esta solución depende de varios paquetes nuget que tienen como objetivo .NET 4.6.2 y, por lo tanto, dependen del paquete nuget System.ValueTuple .

Pero después de actualizar, obtengo un montón de estos errores de compilación:

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

No puedo eliminar el paquete System.ValueTuple , como se sugiere en los comentarios here , porque otros paquetes dependen de él. (Y si lo fuerzo, parece que estallan).

¿Alguna sugerencia?

Actualización 8/8/17

Descubrí que puedo eliminar el paquete System.ValueTuple y puedo obtener la solución para compilar de esa manera. Sin embargo, tengo una docena de paquetes NuGet en la solución que parecen estar dirigidos a .NET 4.6.2, y por lo tanto requieren System.ValueTuple como una dependencia. Puedo instalarlos y luego forzar la eliminación del paquete System.ValueTuple , pero si alguno de esos paquetes tiene una actualización e instalo la actualización, entonces el paquete System.ValueTuple vuelve a instalar y el sistema deja de construirse hasta que elimine el paquete. paquete de nuevo.

En otras palabras, puedo hacer que todo funcione, pero parece incómodo y torpe. ¿Seguro que hay una mejor manera de abordar esto?


Sí, actualice a github.com/dotnet/announcements/issues/25 .

Aquí es por qué:

El paquete System.ValueTuple proporciona los tipos ValueTuple que se requieren para la sintaxis de tupla C #. En .NET Framework 4.7 hemos agregado los tipos directamente a mscorlib . Si usa ambos, el paquete NuGet, así como .NET Framework 4.7, terminará viendo los mismos tipos varias veces. Esto resulta en problemas como este reportados en .

Hemos actualizado el paquete NuGet para que escriba los tipos de tuplas en .NET Framework 4.7 a mscorlib . Esto unifica los tipos y, por lo tanto, le permite consumir otras bibliotecas y paquetes NuGet que dependen de System.ValueTuple mientras aún se dirige a .NET Framework 4.7.

Ver github.com/dotnet/announcements/issues/25 .