Сам язык, как правило, не связан с определенной средой выполнения/фреймворком, хотя некоторые функции языка требуют функций фреймворка. (Например, интерполированные строки являются немного более гибкими на .NET 4.6, чем на .NET 2.0 из-за наличия FormattableString
.) Тем не менее, есть две вещи, которые необходимо учитывать:
- Версия компилятора С # поддерживаются по SDK вы установили (
dotnet cli
)
- версия компилятор с # пакетов, которые поддерживаются конкретной рамочным версии
в SDK поддерживает C# 6 из коробки. Я бы лично ожидал версию пакетов Roslyn для поддержки .NET Core (например, таргетинг netstandard1.5
), поэтому код, который компилирует больше кода во время выполнения, должен быть хорошо на этом фронте. Я не знаю, что такое план с точки зрения привязки версий компилятора к версиям SDK. Я подозреваю, что это станет яснее, когда будет завершен переход project.json к msbuild.
Я не знаю, каким образом определить, какую версию языка поддерживает конкретный SDK из коробки - было бы разумно легко найти последовательность небольших классов, которые будут использовать определенные языковые функции и посмотреть, компилируются ли они , конечно. Trickier должен был придумать код, который строится с несколькими версиями, но дает разные результаты; есть способы сделать это между последовательными языковыми версиями (по крайней мере 2-3, 3-4, 4-5 ... не уверены в 5-6), но они немного более запутанны.
Хорошо, но вопрос не об этом. – boj