根据C# 8 announcement video,可以为整个项目启用“可空引用类型”特性。
但是如何为项目启用它呢?我在Visual Studio 2019 Preview 1的项目属性窗口中没有找到任何新的合适选项。
如果C#语言版本更改为8.0,是否可以为“旧版”.csproj
项目启用该功能?
根据C# 8 announcement video,可以为整个项目启用“可空引用类型”特性。
但是如何为项目启用它呢?我在Visual Studio 2019 Preview 1的项目属性窗口中没有找到任何新的合适选项。
如果C#语言版本更改为8.0,是否可以为“旧版”.csproj
项目启用该功能?
6条答案
按热度按时间b1zrtrql1#
在Visual Studio 16.2中(从预览1开始),属性名称会变更为
Nullable
,这个名称比较简单,而且与命令列参数一致。将以下属性添加到
.csproj
文件中。如果您的目标是
netcoreapp3.0
或更高版本,则不需要指定LangVersion
来启用可为空的引用类型。或者,如果您喜欢使用GUI,请打开“项目属性”UI,搜索 nullable 并选择所需得选项:
对于较早的Visual Studio版本:
NullableContextOptions
设置为enable
。NullableReferenceTypes
设置为true
。weylhg0b2#
请注意,此设置在VS 2019 preview 1和preview 2之间更改。对于preview 2或preview 3,您需要在
.csproj
中使用此设置:之前的答案中提到的
<NullableReferenceTypes>
(我最初在2019年2月4日写下此答案时,已标记为可接受的答案)在写下该答案时是正确的,但不再被识别。xhv8bpkk3#
除了@DrewNoakes接受的答案外,请注意,可以通过在包含
.sln
文件的文件夹中添加一个名为Directory.Build.props
的文件,一次为所有项目设置nullable属性。只需像这样定义
Directory.Build.props
文件:您需要重新启动Visual Studio,此操作才能生效。
关于
Directory.Build.props
的更多信息。lskq00tm4#
值得注意的是,到目前为止,这也是项目的“属性”页中公开的设置:
至少在VS2019中为16.6+。
kxkpmulp5#
对于Visual Studio 2019 * 预览版2和3,请参阅Ian Griffiths的答案。*
适用于Visual Studio 2019的解决方案***预览版1***:
若要启用.NET核心项目的可为Null的指涉型别功能,请将
NullableReferenceTypes
属性加入.csproj
档案,如下所示:正如在关于https://github.com/dotnet/project-system/issues/4058的注解中引用的@JulienCouvreur,新属性在“旧”项目系统中尚不受支持,但在C# 8.0发布之前将受支持。
r7s23pms6#
旧版csproj格式
您询问了有关旧版
.csproj
的问题。请在文本编辑器中打开项目文件,并进行以下更改:1.在
Debug
和Release
PropertyGroup区段中加入/变更<LangVersion>8.0</LangVersion>
:1.通过将
<Nullable>enable</Nullable>
添加到主PropertyGroup
来启用对可空引用类型的支持:在Visual Studio 2019 v16.2.0 Preview 3中使用C# 8和可空引用类型语法与.NET WinForms应用程序进行测试。
SDK样式的项目文件
SDK风格的项目要简单得多,并且可以在Visual Studio中编辑。对于这些项目,您只需要(在与
TargetFramework
或TargetFrameworks
相同的PropertyGroup
中):备注
LangVersion
。<LangVersion>latest</LangVersion>
也无法获得C# 8.0。您必须显式地将语言版本设置为8.0。有关更多详细信息,请参阅我对问题Does C# 8 support the .NET Framework?的回答。