121

根据C# 8 公告视频,可以为整个项目启用“可空引用类型”功能。

但是如何为项目启用它呢?我在 Visual Studio 2019 Preview 1 的“项目属性”窗口中没有找到任何新的合适选项。

.csproj如果 C# 语言版本更改为 8.0,是否可以为“遗留”项目启用它?

4

6 回答 6

132

在 Visual Studio 16.2(从预览版 1 开始)中,属性名称更改为Nullable,这更简单并且与命令行参数对齐。

将以下属性添加到您的.csproj文件中。

<PropertyGroup>
  <Nullable>enable</Nullable>
  <LangVersion>8.0</LangVersion>
</PropertyGroup>

如果您的目标是netcoreapp3.0或更高版本,则无需指定 aLangVersion即可启用可为空的引用类型。


对于较旧的 Visual Studio 版本:

  • 从 16.0 预览 2 到 16.1,设置NullableContextOptionsenable.
  • 在 16.0 预览版 1 中,设置NullableReferenceTypestrue.
于 2019-05-23T03:07:13.773 回答
35

请注意,此设置在 VS 2019 预览版 1 和预览版 2 之间更改。使用预览版 2 或 3,您需要在您的.csproj:

<PropertyGroup>
  <LangVersion>8.0</LangVersion>
  <NullableContextOptions>enable</NullableContextOptions>
</PropertyGroup>

较早的<NullableReferenceTypes>答案中提到的(当我最初在 2019 年 2 月 4 日写这个答案时,它已被标记为已接受的答案)在写答案时是正确的,但它不再被识别。

于 2019-02-04T17:38:23.240 回答
25

除了@DrewNoakes 接受的答案之外,请注意,可以通过在包含您的文件的文件夹中添加一个名为的文件,一次为所有项目设置可空属性。Directory.Build.props.sln

只需像这样定义您的Directory.Build.props文件:

<Project>

  <PropertyGroup>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

您需要重新启动 Visual Studio 才能使其生效。

更多关于Directory.Build.props.

于 2019-12-29T20:24:53.907 回答
20

值得注意的是,到目前为止,这也是项目“属性”页面中的公开设置:

至少在 VS2019 16.6+ 中。

于 2020-11-04T08:27:19.757 回答
12

对于 Visual Studio 2019 Preview 2 & 3,请参阅Ian Griffiths 的回答

Visual Studio 2019 Preview 1的解决方案:

要为 .NET Core 项目启用 Nullable Reference Types 功能,请将NullableReferenceTypes属性添加到.csproj文件中,如下所示:

<PropertyGroup>
  ...
  <NullableReferenceTypes>true</NullableReferenceTypes>
  <LangVersion>8.0</LangVersion>
</PropertyGroup>

正如@JulienCouvreur 在关于https://github.com/dotnet/project-system/issues/4058的评论中所引用的那样,“旧”项目系统尚不支持新属性,但将在 C# 8.0 发布之前支持。

于 2018-12-05T15:42:20.000 回答
9

旧版 csproj 格式

您询问了传统.csproj格式。在文本编辑器中打开项目文件并进行以下更改:

  1. <LangVersion>8.0</LangVersion>DebugReleasePropertyGroup 部分中添加/更改:

     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <LangVersion>preview</LangVersion>
    
  2. <Nullable>enable</Nullable>通过添加到 main启用对可为空的引用类型的支持PropertyGroup

     <PropertyGroup>
        <Nullable>enable</Nullable>
    

在 Visual Studio 2019 v16.2.0 Preview 3 中使用 C# 8 和可为空的引用类型语法使用 .NET WinForms 应用进行测试。


SDK 风格的项目文件

SDK 风格的项目要简单得多,并且可以在 Visual Studio 中进行编辑。对于这些,您只需要(与orPropertyGroup相同):TargetFrameworkTargetFrameworks

  <PropertyGroup>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>

笔记

于 2019-07-14T01:47:27.647 回答