C # 8 발표 비디오 에 따르면 전체 프로젝트에 대해 "nullable reference types"기능을 활성화 할 수 있습니다.
하지만 프로젝트에서 어떻게 활성화할까요? Visual Studio 2019 Preview 1의 프로젝트 속성 창에서 새로운 적절한 옵션을 찾지 못했습니다.
.csproj
C # 언어 버전이 8.0으로 변경된 경우 '레거시' 프로젝트에 대해 활성화 할 수 있습니까 ?
C # 8 발표 비디오 에 따르면 전체 프로젝트에 대해 "nullable reference types"기능을 활성화 할 수 있습니다.
하지만 프로젝트에서 어떻게 활성화할까요? Visual Studio 2019 Preview 1의 프로젝트 속성 창에서 새로운 적절한 옵션을 찾지 못했습니다.
.csproj
C # 언어 버전이 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 버전의 경우 :
NullableContextOptions
합니다 enable
.NullableReferenceTypes
에 true
.NullableContextOptions
여전히 필요합니다 .
enable
. "기본적으로 유형이 null이 아닌 새로운 C # 8.0 설정을 사용하도록 설정"을 의미합니다. disable
"모든 유형이 nullable 인 이전 방식으로 수행"을 의미합니다.
LangVersion
만들고에 Nullable
속성을 추가 .csproj
했으며 제대로 작동합니다. 프로젝트도 ToolsVersion="15.0"
있습니다.
이 설정은 VS 2019 미리보기 1과 미리보기 2 사이에서 변경됩니다. 미리보기 2 또는 3을 사용하는 경우 다음에서 필요합니다 .csproj
.
<PropertyGroup>
<LangVersion>8.0</LangVersion>
<NullableContextOptions>enable</NullableContextOptions>
</PropertyGroup>
<NullableReferenceTypes>
이전 답변에서 언급 한 대답이 기록 된 시간에 정확했다 (I 원래 2019년 2월 4일에이 답변을 작성, 허용 대답으로 표시되지 있었다), 그러나 더 이상 인식이다.
enable
, disable
, safeonly
: 등) github.com/dotnet/roslyn/blob/master/docs/features/...
@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이 릴리스되기 전에 지원됩니다.
net472
? 그런데 그 설정을 어떻게 / 어디에서 찾았습니까? 그 참조는 매우 유용 할 것입니다. 꽤 같이 비디오대로 작동하지 않는 많은 것들을 발견
레거시 .csproj
형식 에 대해 물었습니다 . 텍스트 편집기에서 프로젝트 파일을 열고 다음과 같이 변경하십시오.
및 PropertyGroup 섹션 <LangVersion>8.0</LangVersion>
에서 추가 / 변경 :Debug
Release
<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 스타일 프로젝트는 훨씬 간단하며 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를 지원합니까? 에 대한 내 대답을 참조하십시오 . 상세 사항은.