【发布时间】:2020-10-20 05:02:52
【问题描述】:
编辑 [2020 年 11 月 29 日]:.NET 5.0 现已推出,但如果您的目标是 .NET Standard 2.1,则仍需要以下解决方案
C# 9.0 仍在开发中。有几个参考资料让我相信它现在应该是可测试的(无论如何,其中一些)。
- Awesome 先生本人的 Microsoft 博客,介绍了这些功能。 https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/
- github上的语言跟踪页面:https://github.com/dotnet/roslyn/blob/master/docs/Language%20Feature%20Status.md
我正在使用 VS 2019 16.7 预览版 3.1。我已为项目选择语言版本作为 Preview。
我可以使用一些 C# 9 功能。点赞:Dictionary<string, object> Stuff = new()
但是使用新的init 功能会给我这个错误:Error CS0518 Predefined type 'System.Runtime.CompilerServices.IsExternalInit' is not defined or imported
我该如何解决这个问题?
导致错误的代码示例:
class Test
{
public int Hello { get; init; }
}
和
record Test(int hello);
记录定义是简写的,并扩展为使用init 的内容,这也是它受到影响的原因。
我在上面链接到的语言跟踪页面显示该功能是Merged into 16.7p3,我正在使用它。
我是不是太兴奋了?我需要等待吗?或者现在有没有办法使用这些功能:D
编辑(在 cmets 中请求) - 为 .net 5.0 控制台应用添加 csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>
编辑 #2:此处发布的解决方法 - https://github.com/dotnet/roslyn/issues/45510
【问题讨论】:
-
你的目标是 .net core 5 吗?
-
是的。 .net 5.0 控制台应用程序 (preview6) 和 .net 标准 2.1 类库中都会出现此问题。
-
.net 标准 2.1 不会有这个。请发布您的整个 csproj
-
编辑帖子以包含 csproj
-
有人知道
IsExternalInit是什么意思吗?只是好奇。