Не удалось обновить проект Visual Studio 2019 до сборки C # 8 - PullRequest
1 голос
/ 24 марта 2020

Для одного из наших проектов мы пытаемся перейти на использование 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. Однако, когда я строю решение, я получаю следующий вывод в списке ошибок: enter image description here

Но тогда журнал Ouput показывает следующее:

enter image description here

Когда я просматриваю журнал сборки после подробного описания детализации 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.

Странно то, что все это работает и встроено в другое решение, которое у нас есть.

Итак, кто-то может помочь мне в правильном направлении, как это исправить? На данный момент я не знаю, где искать решение.

Ответы [ 2 ]

4 голосов
/ 24 марта 2020

Из документов :

C# 8.0 поддерживается на . NET Core 3.x и . NET Стандарт 2.1 .

И :

C# 8.0 (и выше) поддерживается только на. NET Core 3.x и более новые версии. Многие из новейших функций требуют библиотеки и функций времени выполнения, представленных в. NET Core 3.x.

0 голосов
/ 24 марта 2020

Я нашел ответ, который помог мне решить эту проблему. В моем случае мне пришлось обновить пакет Microsoft.Net.Compilers до последней версии. Теперь он строит без ошибок.

...