【问题标题】:C# compiler throws Language Version (LangVersion) reference error "Invalid 'nullable' value: 'Enable' for C# 7.3" [closed]C# 编译器抛出语言版本 (LangVersion) 参考错误“无效的‘nullable’值:C# 7.3 的‘Enable’”[关闭]
【发布时间】:2019-06-17 18:36:48
【问题描述】:

我有几个 .NET Standard 项目的解决方案,我想启用 c# 8 并且可以为空,如下所示:

<PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>

问题是有些项目编译正常,有些有错误:

“可为空”值无效:C# 7.3 的“启用”。请使用语言 版本“预览”或更高版本

我有 Visual Studio 16.2 Preview 2 和 .NET Core 3 Preview 6。这是预览中的错误还是我做错了什么?

【问题讨论】:

  • 你有&lt;LangVersion&gt;8.0&lt;/LangVersion&gt;,而不是&lt;LangVersion&gt;preview&lt;/LangVersion&gt;。请参阅this page 了解如何指定previewlatest 等...
  • 跟预览报错信息是一样的
  • 无复制。我也使用8.0。在那些失败的项目中,您是否有指向较早 SDK 的 global.json
  • 对于 repro 我有我的代码 github - 例如这个项目失败了 - github.com/bigdnf/HomeCenter/blob/Core3/Core/HomeCenter.Model/…。我不记得有任何全局变量。

标签: c# nullable c#-8.0 nullable-reference-types


【解决方案1】:

您应该按照错误消息的提示尝试&lt;LangVersion&gt;preview&lt;/LangVersion&gt;

【讨论】:

  • 跟预览报错信息是一样的
  • preview 8.0 在这个时间点。
  • 直到发布后才被识别为8.0。
  • 如果您右键单击您的项目,导航到“属性”>>“构建”>>“高级”>>“语言版本”,您会注意到 Visual Studio 不提供 UI 来更改值,您可能需要导航到解决方案下所有项目的 csproj 文件(通过右键单击 Visual Studio 中的每个项目并选择“卸载项目”,打开 csproj 文件)并添加 preview 。此设置将帮助您最新的 C# 编译器根据您的项目目标框架确定默认语言版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多