проект с ГИТа примерно годовой давности
Взял проект с ГИТа примерно годовой давности, а он не собирается.
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; }
А у меня - нет.
Но у меня - Ент версия.
Ответ на вопрос будет:
в "Solution Items"
надо создать файлик Directory.Build.props
и в нем указать используемую версию языка,
Все есть, но не помогло.
Нашел!
Не инсталлирован фреймворк 7.4.2
Я всё таки встряну с вопросом, ладно?
ноhttps://docs.microsoft.com/en-us/dotnet/csharp/language-re...
Это получается, что версии языка от 9 и выше доступны только для .NET 5+?
Core,
Standard и
Framework - это уже устаревшее и никак поддерживать новые версии языка не будут?
Подарок от решарпера
-----
Для начала надо бы версию языка назвать.
В солюшене 9.0 прописано.
Думаю у тебя более ранняя - компилится - будет, но писанины - больше.
Где взять NDP45?
NDP451 & NDP452 -
есть, но чистую 45 не могу найти.
Читаем Карла и Маркса
https://docs.microsoft.com/en-us/dotnet/csharp/language-re...
C# 9.0 is supported only on .NET 5 and newer versions.
странно, какая связь?
-----
Не знаю - только-только начинаю смотреть что есть что...
и оно мне не особо нравится...
Пофиксил.
Для фикса потребовался апдейт Студии...
Кто бы мне еще сказал какого черта лапоть греется... до запаха палева...
У меня - семерка. Диагностика там еле-еле...
По опыту - две браузерные игрушки... т.е. жабий скрипт и картинки...