Funciona C # 7.0 for.NET ¿4.5?


He creado un proyecto en Visual Studio 2017 RC para comprobar si puedo utilizar nuevas características del lenguaje C# 7.0 en un proyecto.NET Framework 4.5. Me parece que después de hacer referencia a System.ValueTuple NuGet, las nuevas tuplas están funcionando bien. ¿Hay algo más en lo que deba pensar, o esto va a funcionar?

Después de comprobar System.ValueTuple dependencias NuGet, parece que.NET Framework 4.0 no es compatible. ¿Es este el caso, o hay alguna manera de hacer que el nuevo lenguaje funcione también en este tiempo de ejecución?

Author: svick, 2017-02-27

2 answers

Repasemos las características nuevas en C# 7.0:

  • Tuplas: El paquete System.ValueTuple tiene una versión para el perfil portable-net40+sl4+win8+wp8. Eso significa que es utilizable en. Net 4.0. (No estoy seguro de por qué las dependencias listan solo.Net 4.5.)

    Si desea usar tuplas en versiones aún más bajas de.Net, debería seguir funcionando, siempre y cuando agregue el código para ValueTuple y los tipos relacionados a su proyecto.

  • out variables, coincidencia de patrones, local funciones, más miembros con cuerpo de expresión, expresiones throw, mejoras en la sintaxis literal numérica: Todas estas características son solo azúcar de sintaxis, por lo que no necesitan nuevas capacidades del marco.

  • ref locals y returns: Esta característica expone en C# lo que el framework soportó desde el inicio, por lo que tampoco se necesitan cambios en el framework aquí.

  • Generalized async return types: Para usar esta característica, necesita un tipo que tenga el AsyncMethodBuilder atributo, que está en el paquete System.Threading.Tasks.Extensions (junto con uno de esos tipos, ValueTask<T>). Este paquete solo es compatible con. Net 4.5, por lo que para.Net 4.0, tendría que compilar los tipos relevantes usted mismo. (Usar await en.Net 4.0 también requiere Microsoft.Bcl.Async, pero eso no es nada nuevo.)

Para resumir: Todo C# 7.0 debería funcionar en.Net 4.5 después de instalar los paquetes requeridos y la mayor parte debería funcionar en. Net 4.0 también.

 76
Author: svick,
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-10-25 18:09:58

Ejecutar una aplicación compilada de C# 7 en. NET 4.5 debería estar bien en este momento, pero tenga en cuenta que ejecutar ASP.NET aplicaciones que utilizan ASP.NET La compilación dinámica no funcionará en.NET 4.5 porque el compilador de C# 7.0 requiere. NET 4.6 para ejecutarse.

Fuente: https://github.com/dotnet/roslyn/issues/17908:

El compilador de C# 7.0 (2.0 y superior) requiere. NET 4.6 para ejecutar

La información sobre https://www.nuget.org/packages/Microsoft.Net.Compilers/2.0.1 (sobre el soporte de. NET 4.5) parece estar desactualizado.

 18
Author: Michael Kaliszka,
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-27 11:09:42