Для одного из наших проектов мы пытаемся перейти на использование C # 8 вместо C # 7.1. Обновление выглядит так, как будто оно работает, потому что компилятор выглядит так, как будто он принимает операторы C # 8 (он не помечает это как ошибку). Однако, когда я собираю проект, я получаю сбой сборки без первоначальных ошибок.
Код для тестирования C # 8 имеет следующие строки:
private string TestCSharp8(int x)
{
return x switch
{
0 => "ZERO",
1 => "ONE",
2 => "TWO",
3 => "THREE",
_ => "OTHER"
};
}
IDE принимает этот код и даже предлагает переформатировать его к этому при написании «старомодного» оператора switch
. Однако, когда я строю решение, я получаю следующий вывод в списке ошибок:
Но тогда журнал Ouput показывает следующее:
Когда я просматриваю журнал сборки после подробного описания детализации Ouput, я вижу следующие ошибки:
1>C:\VisualStudio\Repos\XXX\YYY\ZZZ\Repositories\ABC.cs(301,5,301,6): error CS1597: Semicolon after method or accessor block is not valid
1>C:\VisualStudio\Repos\XXX\YYY\ZZZ\Repositories\ABC.cs(304,1,304,2): error CS1022: Type or namespace definition, or end-of-file expected
1>Done executing task "Csc" -- FAILED.
1>Done building target "CoreCompile" in project "XYZ.csproj" -- FAILED.
В файле проекта Я установил <LangVersion>
на latest
. Целевой фреймворк, на который мы нацеливаемся: NET Фреймворк 4.7.1.
Странно то, что все это работает и встроено в другое решение, которое у нас есть.
Итак, кто-то может помочь мне в правильном направлении, как это исправить? На данный момент я не знаю, где искать решение.