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


¿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?

Author: SerG, 2017-03-08

2 answers

NO necesita apuntar a.NET 4.6 y superior, eso es incorrecto. Para usar Tuplas, necesitas el Sistema.ValueTuple paquete NuGet. A la derecha https://www.nuget.org/packages/System.ValueTuple / puedes ver que dice que es compatible con 4.5 y superior, y en realidad, es compatible con 4.0 y superior. Y si quieres volverte loco, si creas tu propia clase System.ValueTuple que haga exactamente lo que hace ese paquete, funcionará de nuevo en.NET 3.5 y probablemente también en versiones anteriores. Para los tipos "tipo tarea", también necesita un NuGet paquete, 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áctica. Por ejemplo, acabo de escribir lo siguiente en. NET 2.0 y lanza 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 características de C#7, pero en general, con la excepción de las tuplas (y sus características relacionadas como la deconstrucción), debería funcionar en.NET 2.0 y superior, ya que la mayor parte es solo 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 hoy no.

Características que he confirmado que funcionan en. NET 2.0:

  • Literales binarios
  • Separadores de dígitos
  • Inline out parámetros
  • Usando _ para descartar parámetros
  • Local funciones
  • Coincidencia de patrones basada en tipos if (obj is int i) y case int i:
  • Coincidencia constante de patrones if (i is 2)
  • Coincidencia de patrón Var if (i is var j)
  • Ref devuelve
  • Expresiones de tiro
  • Getters y setters con cuerpo de expresión
  • Constructores y finalizadores con cuerpo de expresión
 87
Author: dman2306,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-08 17:26:46

Para usar 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.

 2
Author: SerG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-28 14:44:28