C # 8 발표 비디오 에 따르면 전체 프로젝트에 대해 “nullable reference types”기능을 활성화 할 수 있습니다.
하지만 프로젝트에서 어떻게 활성화할까요? Visual Studio 2019 Preview 1의 프로젝트 속성 창에서 새로운 적절한 옵션을 찾지 못했습니다.
.csprojC # 언어 버전이 8.0으로 변경된 경우 ‘레거시’ 프로젝트에 대해 활성화 할 수 있습니까 ?
답변
Visual Studio 16.2 (미리보기 1에서)에서는 속성 이름이으로 변경되었습니다 Nullable. 이는 더 간단하고 명령 줄 인수와 일치합니다.
<PropertyGroup>
...
<Nullable>enable</Nullable>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
netcoreapp3.0이상을 대상으로하는 경우 LangVersion.NET Core 3의 기본값 인 8 을 지정할 필요가 없습니다 .
이전 Visual Studio 버전의 경우 :
- 16.0 미리보기 2에서 16.1로 설정
NullableContextOptions합니다enable. - 16.0 미리보기 1에서 설정
NullableReferenceTypes에true.
답변
이 설정은 VS 2019 미리보기 1과 미리보기 2 사이에서 변경됩니다. 미리보기 2 또는 3을 사용하는 경우 다음에서 필요합니다 .csproj.
<PropertyGroup>
<LangVersion>8.0</LangVersion>
<NullableContextOptions>enable</NullableContextOptions>
</PropertyGroup>
<NullableReferenceTypes>이전 답변에서 언급 한 대답이 기록 된 시간에 정확했다 (I 원래 2019년 2월 4일에이 답변을 작성, 허용 대답으로 표시되지 있었다), 그러나 더 이상 인식이다.
답변
@DrewNoakes 허용 답변 외에도 파일 이 포함 된 폴더에 라는 파일을 추가하여 모든 프로젝트에 대해 nullable 속성 을 한 번 에 설정할 수 있습니다 .Directory.Build.props.sln
다음 Directory.Build.props과 같이 파일을 정의하십시오 .
<Project>
<PropertyGroup>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
이를 적용하려면 Visual Studio를 다시 시작해야합니다.
에 대한 추가 정보 Directory.Build.props.
답변
Visual Studio 2019 Preview 2 & 3의 경우 Ian Griffiths의 답변을 참조하세요.
Visual Studio 2019 Preview 1 : 솔루션 :
.NET Core 프로젝트에 대해 Nullable 참조 형식 기능을 사용하려면 다음과 같이 파일 에 NullableReferenceTypes속성을 추가 합니다 .csproj.
<PropertyGroup>
...
<NullableReferenceTypes>true</NullableReferenceTypes>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
@JulienCouvreur가 https://github.com/dotnet/project-system/issues/4058 에 대한 의견에서 언급했듯이 새 속성은 ‘이전’프로젝트 시스템에서 아직 지원되지 않지만 C # 8.0이 릴리스되기 전에 지원됩니다.
답변
레거시 csproj 형식
레거시 .csproj형식 에 대해 물었습니다 . 텍스트 편집기에서 프로젝트 파일을 열고 다음과 같이 변경하십시오.
-
및 PropertyGroup 섹션
<LangVersion>8.0</LangVersion>에서 추가 / 변경 :DebugRelease<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <LangVersion>preview</LangVersion> -
<Nullable>enable</Nullable>main 에 추가 하여 nullable 참조 유형에 대한 지원을 활성화합니다PropertyGroup.<PropertyGroup> <Nullable>enable</Nullable>
Visual Studio 2019 v16.2.0 Preview 3에서 C # 8 및 nullable 참조 형식 구문을 사용하여 .NET WinForms 앱으로 테스트되었습니다.
SDK 스타일 프로젝트 파일
SDK 스타일 프로젝트는 훨씬 간단하며 Visual Studio 내에서 편집 할 수 있습니다. 이러한 내용은 모두 당신이 필요 (에서 동일 PropertyGroup로 TargetFramework또는 TargetFrameworks) :
<PropertyGroup>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
메모
-
.NET Core 3.x 프로젝트 는 기본적으로 C # 8 을 대상 으로 하므로
LangVersion해당 프로젝트에 대해을 지정할 필요가 없습니다 . -
.NET Framework 프로젝트의 기본값은 C # 7.3이며 .NET Framework에서도 C # 8.0을 사용할 수 없습니다
<LangVersion>latest</LangVersion>. 언어 버전을 8.0으로 명시 적으로 설정해야합니다. C # 8은 .NET Framework를 지원합니까? 에 대한 내 대답을 참조하십시오 . 상세 사항은.

