Вы спрашивали о устаревшем формате .csproj
.Мне удалось скомпилировать приложение .NET WinForms с C # 8 в Visual Studio 2019 (v16.2.0 Preview 3), вручную внеся следующие изменения:
Добавить <LangVersion>preview</LangVersion>
(или8.0
) в разделах Debug
и Release
PropertyGroup:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<LangVersion>preview</LangVersion>
Включите поддержку необнуляемых ссылочных типов, добавив <Nullable>enable</Nullable>
к основному PropertyGroup
:
<PropertyGroup>
<Nullable>enable</Nullable>
С этой конфигурацией обнуляемые ссылочные типы компилируются без предупреждения или ошибки.
Если я удаляю <Nullable>enable</Nullable>
, проект компилируется, но с предупреждением компилятора "CS8632: Аннотацию для ссылочных типов, допускающих обнуляемость, следует использовать только в коде в контексте «#nullable».
Пожалуйста, обратитесь к моему ответу на вопрос Поддерживает ли C # 8 .NET Framework? если вам нужна дополнительная информация.
Проекты в стиле SDK намного проще и могут редактироваться в Visual Studio.Для этого все, что вам нужно, это (в тех же PropertyGroup
, что и TargetFramework
или TargetFrameworks
):
<PropertyGroup>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
В обоих случаях вы, вероятно, захотите использовать <LangVersion>latest</LangVersion>
один раз C #8 вне предварительного просмотра - для получения дополнительной информации см. Управление версиями языка C # в MSDN.