【发布时间】:2021-06-14 23:54:51
【问题描述】:
编辑:谢谢大家!我从未升级到更新版本的 .NET 和之前的语言版本。因此不知道 .csproj 配置。即使我在发布问题之前进行了研究 我自己无法找到解决方案。所以,我只留下这两个 供进一步参考的链接,也许这也可能对某人有所帮助。
https://docs.microsoft.com/en-us/dotnet/standard/frameworks
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version
我已升级到 .NET 5.0.301
终于有时间在C# 9.0
中尝试记录类型我写了一个简单的代码,但在编译过程中出错。
我使用 Visual Studio Code 作为编辑器。
VS Code 版本 1.57.0
C#扩展版本1.23.12
这是我的 settings.json:
"editor.semanticHighlighting.enabled": true,
"csharp.semanticHighlighting.enabled": true,
"omnisharp.path": "latest"
设置:
dotnet new sln -n "Test"
dotnet new console -n "TestProject"
dotnet sln Test.sln add .\TestProject\TestProject.csproj
我的代码:
using System;
namespace TestProject
{
class Program
{
static void Main(string[] args)
{
var person = new Person() { Name = "Tom" };
person.Name = "Bob";
Console.WriteLine(person.Name);
}
}
public record Person
{
public string Name { get; set; }
public int Age { get; set; }
}
}
问题:
CS0246 The type or namespace name 'Person' could not be found (are you missing a using directive or an assembly reference?)
CS0246 The type or namespace name 'record' could not be found (are you missing a using directive or an assembly reference?)
CS0548 '<invalid-global-code>.Person': property or indexer must have at least one accessor
CS1513 } expected
CS0116 A namespace cannot directly contain members such as fields or methods
CS1022 Type or namespace definition, or end-of-file expected
非常感谢任何帮助
【问题讨论】:
-
我对 VS Code 了解的不够多,无法回答。但是错误消息非常清楚地表明,您没有正确配置事物以使用支持
record作为关键字的 C# 版本。您需要仔细检查您使用的代码版本是否正确,以及您的项目是否已正确配置为使用 C# 9 功能。 -
提供的代码在 VS2017 下用 struct 而不是 record 编译得很好:项目属性中的 Framework Target 是什么?正如所问和回答的那样:.NET 5 或更低版本?但是构建设置中的语言版本标签是什么? 9 或 8 或 7 或更少?使用的是最后一个大调还是小调? stackoverflow.com/questions/44699125/…
-
当你得到它的工作时,你可以将你的记录缩写为
public record Person(string Name, int Age) -
升级到不同版本的 Net 时,请确保您进行了干净的构建。像您这样的错误可能是由两个问题引起的。一个是代码未编译,并且您的 Net 版本不匹配.第二个原因是VS在识别时自动升级并且由于缺少库而导致不同版本的Net失败。在找到第一个丢失的库后升级中止,因此并非所有库版本都被更改,您必须手动修改版本.简单的解决方案是从解决方案资源管理器参考中删除库。然后再次添加将更新版本。
-
谢谢大家! TargetFramework 和 LangVersion 属性的 .csproj 配置确实有问题。
标签: c# compiler-errors record .net-5 c#-9.0