66 votes

C # 7.0 fonctionne-t-il avec .NET 4.5?

J'ai créé un projet dans Visual Studio 2017 RC pour vérifier si je peux utiliser C# 7.0 fonctionnalités de langage dans une .NET Framework 4.5 projet. Il me semble qu'après le référencement System.ValueTuple NuGet, de nouveaux tuples fonctionnent très bien. Est-il autre chose que je devrais y penser, ou est-ce que le travail?

Après vérification de l' System.ValueTuple NuGet dépendances, il ressemble .NET Framework 4.0 n'est pas pris en charge. Est-ce le cas, ou est-il un moyen pour que la nouvelle langue de travail dans ce runtime aussi?

94voto

svick Points 81772

Passons en revue les nouvelles fonctionnalités de C# 7.0:

  • Les Tuples: L' System.ValueTuple package a une version pour l' portable-net40+sl4+win8+wp8 profil. Cela signifie qu'il est utilisable sur .Net 4.0. (Je ne sais pas pourquoi liste de dépendances .Net 4.5.)

    Si vous souhaitez utiliser les tuples, même sur les versions antérieures de .Net, il doit toujours fonctionner, aussi longtemps que vous ajoutez le code pour ValueTuple et à votre projet.

  • out variables, l'appariement de formes, de fonctions locales, plus d'expression corsé membres, throw expressions numériques, la syntaxe littérale des améliorations: Toutes ces fonctionnalités sont juste la syntaxe de sucre, ils n'ont pas besoin de nouvelles capacités de l'infrastructure.

  • ref des habitants et des retours: Cette fonctionnalité expose en C# ce que le cadre de prises en charge depuis le début, donc pas de changements dans le cadre sont nécessaires ici.

  • Généralisée async types de retour: Pour utiliser cette fonction, vous avez besoin d'un type qui a l' AsyncMethodBuilder d'attribut, qui est dans l' System.Threading.Tasks.Extensions package (avec un tel type, ValueTask<T>). Ce forfait est pris en charge uniquement sur .Net 4.5, donc pour .Net 4.0, vous devez compiler les types pertinents de vous-même. (À l'aide d' awaitsur .Net 4.0 nécessite également Microsoft.Bcl.Async, mais ce n'est rien de nouveau.)

Pour résumer: C# 7.0 devrait travailler .Net 4.5 après l'installation des paquets nécessaires et la plus travailler sur .Net 4.0.

28voto

Michael Kaliszka Points 321

L'exécution d'un C# 7 application compilée .NET 4.5 devrait être bon, à ce moment, mais notez que l'exécution de ASP.NET les applications qui utilisent ASP.NET la Compilation Dynamique ne fonctionne pas sur .NET 4.5, parce que le C# 7.0 compilateur a besoin .NET de 4,6 à exécuter.

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

Le C# 7.0 compilateur (2.0 et plus) nécessite .NET de 4,6 à exécuter

Les informations sur https://www.nuget.org/packages/Microsoft.Net.Compilers/2.0.1 (à propos de l'appui .NET 4.5) semble être dépassé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X