проект с ГИТа примерно годовой давности
Взял проект с ГИТа примерно годовой давности, а он не собирается.
public static CSharpLangVersion? FromRoslynPackageVersion (string roslynPackageVersion) => SemVersion.TryParse (roslynPackageVersion, out var version)
? version switch {
{ Major: > 3 } => CSharpLangVersion.v9_0,
{ Major: 3, Minor: >= 8 } => CSharpLangVersion.v9_0,
{ Major: 3, Minor: >= 3 } => CSharpLangVersion.v8_0,
// ignore 8.0 preview support in 3.0-3.2
{ Major: 2, Minor: >= 8 } => CSharpLangVersion.v7_3,
{ Major: 2, Minor: >= 6 } => CSharpLangVersion.v7_2,
{ Major: 2, Minor: >= 3 } => CSharpLangVersion.v7_1,
{ Major: 2 } => CSharpLangVersion.v7_0,
_ => CSharpLangVersion.v6_0
}
: null;
CSharpLangVersion - enum.
Ошибка - нет конвертора null в CSharpLangVersion
Понимаю, что проблема в версии языка.
Могу воткнутся в проект, но пока не хочу менять.
Где поменять версию языка по умолчанию в Студии 2019 Ент?
Вы не версию языка меняете, а фреймворк. А уже фреймворк поддерживает или не поддерживает версию языка. При этом Студия тоже поддерживает фреймворки не всех версий и в зависимости, установлены ли расширения-обновления. Т.е. сначала смотрим, что поддериживает Студия, потом выставляем фреймворк (доустанавливаем, если надо), а в нём уже поддержка языка.
C# language versioning - C# Guide | Microsoft Docs
.net - What are the correct version numbers for C#? - Stack Overflow
Я может чего-то не понимаю, но используется switch синтаксис, которые работает только с версии языка 8.0. Какой смысл указывать в этом коде версии ниже 8? Или именно этот код запускается на новых версиях, и тестирует сборки, сделанные на любых?
У меня без проблем всё работает
Для языка было тута
ноhttps://docs.microsoft.com/en-us/dotnet/csharp/language-re...
Галка тута точно есть?
Подарок от решарпера
public static CSharpLangVersion? FromRoslynPackageVersion (string roslynPackageVersion) { var parseResult = SemVersion.TryParse (roslynPackageVersion, out var version); return parseResult ? version is { Major: > 3 } ? CSharpLangVersion.v9_0 : version is { Major: 3, Minor: >= 8 } ? CSharpLangVersion.v9_0 : version is { Major: 3, Minor: >= 3 } ? CSharpLangVersion.v8_0 : version is { Major: 2, Minor: >= 8 } ? CSharpLangVersion.v7_3 : version is { Major: 2, Minor: >= 6 } ? CSharpLangVersion.v7_2 : version is { Major: 2, Minor: >= 3 } ? CSharpLangVersion.v7_1 : version is { Major: 2 } ? CSharpLangVersion.v7_0 : CSharpLangVersion.v6_0 : null; }
Я всё таки встряну с вопросом, ладно?
ноhttps://docs.microsoft.com/en-us/dotnet/csharp/language-re...
Это получается, что версии языка от 9 и выше доступны только для .NET 5+?
Core,
Standard и
Framework - это уже устаревшее и никак поддерживать новые версии языка не будут?
Читаем Карла и Маркса
https://docs.microsoft.com/en-us/dotnet/csharp/language-re...
C# 9.0 is supported only on .NET 5 and newer versions.