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?
2 answers
Repasemos las características nuevas en C# 7.0:
-
Tuplas: El paquete
System.ValueTuple
tiene una versión para el perfilportable-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, expresionesthrow
, 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 paqueteSystem.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. (Usarawait
en.Net 4.0 también requiereMicrosoft.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.
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.
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