Visual Studio peut-il cibler la syntaxe C # antérieure en plus des versions .NET Framework antérieures?
-
14-11-2019 - |
Question
La partie facile:
Cibler le framework .NET 2.0 dans un projet Visual Studio 2010 à l'aide de la liste déroulante.
La partie difficile:
Est-il possible de cibler une version de syntaxe spécifique - par exemple var s = "hello world"
est un sucre syntaxique valide dans VS2008 et au-dessus, mais ne compilerait pas dans VS2005. VS2010 peut-il être configuré pour signaler cela au moment de la compilation?
La solution
Cela peut être fait en spécifiant la version linguistique dans les paramètres du projet. Pour définir la version linguistique sur C # 2.0, faites ce qui suit
- Faites un clic droit sur le projet et sélectionnez "Propriétés"
- Accédez à l'onglet "Build"
- Cliquez sur le bouton "avancé"
- Modifiez la "version linguistique" en train de "ISO-2"
Voici les autres sélections et leurs significations dans Visual Studio 2010.
- ISO-1: C # 1.0 / Visual Studio RTM et 2003
- ISO-2: C # 2.0 / Visual Studio 2005
- C # 3.0: C # 3.0 / Visual Studio 2008
- Par défaut: C # 4.0 / Visual Studio 2010
Autres conseils
Oui. De l'IDE, set:
Project Properties -> Build -> Advanced -> Language Version : ISO-2
Oui toi boîte Faites cela, comme d'autres l'ont dit - mais ce n'est pas une simulation parfaite du compilateur C # 1, comme je l'ai découvert pendant que je faisais une présentation. Il repérera de "gros" changements de syntaxe, mais pas quelques changements subtils de comportement. Par exemple, en C # 1, il n'y a pas de conversion de groupe de méthode, vous ne pourriez donc pas faire ceci:
delegate void Foo(string x);
void Bar(string y) {}
...
Foo foo = Bar;
... Mais simplement définir le compilateur C # 4 pour cibler C # 1 ne le retire pas.