Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

проект с ГИТа примерно годовой давности

666  
Murr патриот14.10.21 23:58
Murr
14.10.21 23:58 

Взял проект с ГИТа примерно годовой давности, а он не собирается.


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 Ент?

#1 
AlexNek патриот15.10.21 12:50
AlexNek
NEW 15.10.21 12:50 
в ответ Murr 14.10.21 23:58
Где поменять версию языка по умолчанию

Когда менял, но сейчас вроде отключили. Вечером гляну, если не забуду. ссылку на гит мона?

#2 
alex445 старожил15.10.21 13:23
NEW 15.10.21 13:23 
в ответ Murr 14.10.21 23:58, Последний раз изменено 15.10.21 13:28 (alex445)

Вы не версию языка меняете, а фреймворк. А уже фреймворк поддерживает или не поддерживает версию языка. При этом Студия тоже поддерживает фреймворки не всех версий и в зависимости, установлены ли расширения-обновления. Т.е. сначала смотрим, что поддериживает Студия, потом выставляем фреймворк (доустанавливаем, если надо), а в нём уже поддержка языка.


C# language versioning - C# Guide | Microsoft Docs

.net - What are the correct version numbers for C#? - Stack Overflow

Microsoft Visual Studio - Wikipedia

.NET Standard | Microsoft Docs

#3 
alex445 старожил15.10.21 13:33
NEW 15.10.21 13:33 
в ответ Murr 14.10.21 23:58

Я может чего-то не понимаю, но используется switch синтаксис, которые работает только с версии языка 8.0. Какой смысл указывать в этом коде версии ниже 8? Или именно этот код запускается на новых версиях, и тестирует сборки, сделанные на любых?

#4 
Murr патриот15.10.21 13:49
Murr
NEW 15.10.21 13:49 
в ответ AlexNek 15.10.21 12:50
Murr патриот15.10.21 13:51
Murr
NEW 15.10.21 13:51 
в ответ alex445 15.10.21 13:23

а фреймворк.

------

Учи мат.часть...

#6 
AlexNek патриот15.10.21 19:08
AlexNek
NEW 15.10.21 19:08 
в ответ Murr 15.10.21 13:49

У меня без проблем всё работает

Для языка было тута

но

https://docs.microsoft.com/en-us/dotnet/csharp/language-re...

Галка тута точно есть?

#7 
AlexNek патриот15.10.21 19:13
AlexNek
NEW 15.10.21 19:13 
в ответ Murr 14.10.21 23:58

Подарок от решарпера


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;
        }
#8 
Murr патриот15.10.21 19:47
Murr
NEW 15.10.21 19:47 
в ответ AlexNek 15.10.21 19:08

А у меня - нет.

Но у меня - Ент версия.


Ответ на вопрос будет:

в "Solution Items"

надо создать файлик Directory.Build.props

и в нем указать используемую версию языка,


Все есть, но не помогло.


Нашел!

Не инсталлирован фреймворк 7.4.2 безум

#9 
alex445 старожил15.10.21 19:58
NEW 15.10.21 19:58 
в ответ AlexNek 15.10.21 19:08

Я всё таки встряну с вопросом, ладно?


но

https://docs.microsoft.com/en-us/dotnet/csharp/language-re...

Это получается, что версии языка от 9 и выше доступны только для .NET 5+?


Core,

Standard и

Framework - это уже устаревшее и никак поддерживать новые версии языка не будут?

#10 
Murr патриот15.10.21 20:34
Murr
NEW 15.10.21 20:34 
в ответ AlexNek 15.10.21 19:13

Подарок от решарпера

-----

Для начала надо бы версию языка назвать.

В солюшене 9.0 прописано.

Думаю у тебя более ранняя - компилится - будет, но писанины - больше.


Где взять NDP45?

NDP451 & NDP452 -

есть, но чистую 45 не могу найти.

#11 
AlexNek патриот15.10.21 21:25
AlexNek
NEW 15.10.21 21:25 
в ответ Murr 15.10.21 19:47
Не инсталлирован фреймворк 7.4.2

странно, какая связь? У меня так


#12 
AlexNek патриот15.10.21 21:26
AlexNek
NEW 15.10.21 21:26 
в ответ alex445 15.10.21 19:58

Читаем Карла и Маркса спок

https://docs.microsoft.com/en-us/dotnet/csharp/language-re...

C# 9.0 is supported only on .NET 5 and newer versions.

#13 
Murr патриот15.10.21 22:18
Murr
NEW 15.10.21 22:18 
в ответ AlexNek 15.10.21 21:25

странно, какая связь?

-----

Не знаю - только-только начинаю смотреть что есть что...

и оно мне не особо нравится... хммм

#14 
Murr патриот15.10.21 23:36
Murr
NEW 15.10.21 23:36 
в ответ Murr 15.10.21 22:18

Пофиксил.

Для фикса потребовался апдейт Студии...безум


Кто бы мне еще сказал какого черта лапоть греется... до запаха палева...

#15 
AlexNek патриот16.10.21 10:40
AlexNek
NEW 16.10.21 10:40 
в ответ Murr 15.10.21 23:36
Кто бы мне еще сказал

Кроме тебя - никто. А что таск менеджер показывает по процу? Кто тыбрит?

#16 
Murr патриот16.10.21 18:37
Murr
NEW 16.10.21 18:37 
в ответ AlexNek 16.10.21 10:40

У меня - семерка. Диагностика там еле-еле...


По опыту - две браузерные игрушки... т.е. жабий скрипт и картинки...

#17