Возможности C # 8 в .NET Framework 4.7.2 - PullRequest
0 голосов
/ 10 октября 2019

В проекте ac #, предназначенном для .NET Framework 4.7.2, я сделал локальную функцию статической, потому что Visual Studio (16.3.3) предложила это. Все скомпилировано и работает нормально. Но когда я выдвинул это на свой сервер сборки CI с установленными инструментами сборки Visual Studio (16.3.3), он пожаловался:

ошибка CS8652: функция «статические локальные функции» в настоящее время находится в режиме предварительного просмотра и не поддерживается . Чтобы использовать функции предварительного просмотра, используйте языковую версию «предварительного просмотра».

Я могу понять, что статические локальные функции являются функцией C # 8, а C # 8 недоступен для проектов, нацеленных на .NET Framework 4.7. 0,2. Так почему же он работал в первую очередь и что я могу сделать, чтобы компилировать его на сервере сборки?

1 Ответ

3 голосов
/ 11 октября 2019

Некоторые функции C # 8.0 доступны в .NET Framework, но не все. Если вы можете компилировать локально, ваш сервер сборки тоже должен быть в состоянии компилировать. Но обратите внимание: C # 8.0 официально поддерживается только на платформах, реализующих .NET Standard 2.1 (чего никогда не будет делать .NET Framework). Так что, хотя это может работать, могут также быть проблемы.

Больше не используйте LangVersion preview. C # 8.0 был выпущен с VS2019 16.3. Используйте LangVersion latest (или latestMajor или 8.0), чтобы получить поддержку C # 8.0 в проекте, который не поддерживает его по умолчанию (см. Управление версиями языка C # ).

Для этого убедитесь, что ваши файлы csproj содержат свойство <LangVersion>latest</LangVersion>. Вы должны вручную отредактировать файлы csproj, чтобы сделать это. Пользовательский интерфейс для изменения языковой версии был отключен в VS2019 16.3, поскольку теперь каждая целевая платформа официально поддерживает только одну языковую версию.

...