netstandard2.0 和 net451 的 c#8 中的 AllowNull 属性引发编译错误
AllowNull Attribute in c#8 for netstandard2.0 and net451 raise compilation error
环境:对比 2019 v16.3.1
在 c# netstandard2.0 和 net451 项目中,我使用带有属性的 c# 8 可空引用。
在 csproj 中启用 c#8:
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
在myclass.cs中,我使用AllowNullAttribute:
class My class {
[AllowNull]
public T MyValue {get;set;}
}
构建项目时出现编译错误:
CS0246 The type or namespace name 'AllowNullAttribute' could not be found (are you missing a using directive or an assembly reference?) ConsoleApp1 (netstandard2.0)
文档Attributes extend type annotations包括这些类型
这段代码有什么问题?
C# 8(因此,通过扩展,AllowNull)似乎在 netstandard 2.0 中没有得到完全支持。
例如,如果您转到 documentation 的 AllowNull 和 select .NET Standard 2.0 作为版本,您将收到以下消息:
The requested page is not available for .NET Standard 2.0. You have
been redirected to the newest product version this page is available
for.
另见 this Github issue。即,
Officially, C# 8.0 is only supported on runtimes that adhere to the
.NET Standard 2.1. That does not (and will not) include .NET Framework
4.x.
环境:对比 2019 v16.3.1
在 c# netstandard2.0 和 net451 项目中,我使用带有属性的 c# 8 可空引用。
在 csproj 中启用 c#8:
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
在myclass.cs中,我使用AllowNullAttribute:
class My class {
[AllowNull]
public T MyValue {get;set;}
}
构建项目时出现编译错误:
CS0246 The type or namespace name 'AllowNullAttribute' could not be found (are you missing a using directive or an assembly reference?) ConsoleApp1 (netstandard2.0)
文档Attributes extend type annotations包括这些类型
这段代码有什么问题?
C# 8(因此,通过扩展,AllowNull)似乎在 netstandard 2.0 中没有得到完全支持。
例如,如果您转到 documentation 的 AllowNull 和 select .NET Standard 2.0 作为版本,您将收到以下消息:
The requested page is not available for .NET Standard 2.0. You have been redirected to the newest product version this page is available for.
另见 this Github issue。即,
Officially, C# 8.0 is only supported on runtimes that adhere to the .NET Standard 2.1. That does not (and will not) include .NET Framework 4.x.