visual studio microsoft español descargar community .net requirements c#-7.0

microsoft - Requisitos de versión de C#7.NET/CLR/Visual Studio



visual studio installer (2)

¿Cuáles son los requisitos mínimos de la versión de .NET framework y CLR para ejecutar C # 7? Además, ¿necesito VS 2017 para compilar C # 7?


Para utilizar toda la potencia de C # 7 fuera de la caja (sin hacer referencia a nugets, etc.), necesita VS 2017 y .Net 4.7 como Marco de destino.


NO es necesario apuntar a .NET 4.6 y superior, eso es incorrecto. Para usar Tuples, necesita el paquete System.ValueTuple NuGet. Justo en https://www.nuget.org/packages/System.ValueTuple/ puede ver que dice que admite 4.5 y superior, y en realidad, es compatible con 4.0 y superior. Y si quiere volverse loco, si crea su propia clase System.ValueTuple que hace exactamente lo que hace ese paquete, funcionará con .NET 3.5 y probablemente también con System.ValueTuple anteriores. Para los tipos de "tareas similares", también necesita un paquete NuGet, https://www.nuget.org/packages/System.Threading.Tasks.Extensions/ . Este paquete también funciona en .NET 4.5 y versiones posteriores de acuerdo con su documentación.

Otras características de C # 7 solo funcionarán en .NET 2 y superiores, ya que son solo azúcar sintáctico. Por ejemplo, acabo de escribir lo siguiente en .NET 2.0 y arroja correctamente:

static void Main(string[] args) { string test = null; string d = test ?? throw new ApplicationException("test"); }

Del mismo modo, int.TryParse("123", out int i); funciona bien en .NET 2.0.

No probé todas las funciones de C # 7, pero en general, con la excepción de Tuples (y sus funciones relacionadas, como deconstrucción), debería funcionar en .NET 2.0 y superior, ya que la mayor parte es azúcar sintáctica. Dicho esto, sí necesita VS2017 para compilar C # 7. Estoy seguro de que en algún momento otros compiladores soportarán C # 7 pero no hoy.

Características Confirmé el trabajo en .NET 2.0:

  • Literales binarios
  • Separadores de dígitos
  • Parámetros de out línea
  • Usando _ para descartar los parámetros
  • Funciones locales
  • Conformidad de patrón basada en tipo if (obj is int i) y case int i:
  • Patrón de coincidencia constante if (i is 2)
  • Coincidencia de patrón var if (i is var j)
  • Ref devoluciones
  • Lanzar expresiones
  • Expression getters y setters
  • Constructores y finalizadores con cuerpo de expresión