Ich erwarte, dass Framework-Level-Updates (wie async) nicht kompiliert werden können, um auf einem niedrigeren Framework zu arbeiten, aber Compiler-Unterschiede (wie der foreach-loop-Variablenbereich) funktionieren korrekt, wenn sie mit C # 5.0 dagegen kompiliert werden. netto 4.0? Kann jemand eine definitive Liste erstellen?
Bearbeiten:
Statt nach einer definitiven Liste zu fragen, die ich als viel zu fordernd ansehe, wäre jemand in der Lage zu antworten, ob sich der Compiler-Level (wie der foreach variable scope) bei Verwendung von C # 5.0 gegen ein anderes verhält frühere Framework-Version.
Alle von ihnen. Es gibt nichts, was wirklich eine neue Laufzeit Unterstützung erfordert - einige Funktionen erfordern nur neue Bibliotheken. Aber es ist nicht erforderlich, dass Sie es gegen die .NET 4.5-Bibliotheken kompilieren - Sie können auch Ihre eigene Implementierung derselben API bereitstellen.
Fügen Sie beispielsweise Ihrem Projekt die folgende Datei hinzu, um die Unterstützung für async / await in .NET 4.0-Projekten zu aktivieren: Ссылка
Ich habe es nicht mit den Anrufer-Info-Attributen versucht, aber ich bin mir ziemlich sicher, dass diese auch funktionieren, wenn Sie sie selbst definieren, anstatt die zu verwenden, die mit .NET 4.5 kommen.
Der gleiche Trick funktioniert mit class ExtensionAttribute
in C # 3, um Erweiterungsmethoden mit .NET 2.0 zu verwenden, und Sie können sogar die vollständigen LINQ to Objects in .NET 2.0 verwenden ( LinqBridge )
Was Funktionen betrifft, kann jede in 4.0 funktionierende Syntax in 4.0 kompiliert werden, auch wenn Sie sie ursprünglich in 5.0 erstellt haben. Visual Studio 11 wird Sie über Code informieren, der in 4.0 nicht funktioniert, wenn Sie die .NET Framework-Version in den Projekteigenschaften ändern, so dass dies mein Leitfaden wäre. Wenn das Kompilieren zu 4.0 ein Problem darstellt, verwenden Sie VS 11 zum Bearbeiten, aber lassen Sie die Framework-Kompatibilität auf 4.5.
Wahrscheinlich gibt es neuere FUDs, die auf eine ältere Version kompiliert werden. Dies war bei früheren Inkarnationen der Fall, aber es ist ein Treffer oder Miss, eine neue Syntax zu verwenden und zu versuchen, rückwärts zu kompilieren.
Ich kenne keine definitive Liste von Sprachfeatures (Schlüsselwörter, usw.) und habe keine mit der Suche gefunden. Ich habe auch keine 4,5-Sprachen-Spezifikation in freier Wildbahn gesehen.