在新的 VS Studio 2017 ASP.NET MVC 5.2.3 项目中使用 C# 7 功能时出现编译错误
Compile errors when using C# 7 features in new VS Studio 2017 ASP.NET MVC 5.2.3 project
我通常将 VS 2017 用于控制台应用程序。但现在我必须创建一个新的 ASP.NET MVC 项目并发现了一些奇怪的东西。
自动生成 getter 和 setter(上下文菜单 "Quick actions and refactoring < Ecapsulate field (and use property)")会引发编译错误。举个简单的例子:
public class Person
{
private string firstname;
public string Firstname { get => firstname; set => firstname = value; }
}
错误信息:
1>------ Build started: Project: DummyASPNETMVC, Configuration: Debug Any CPU ------
1>C:\dev\C#\DummyASPNETMVC\DummyASPNETMVC\Models\Person.cs(12,39,12,41): error CS1043: { or ; expected
1>C:\dev\C#\DummyASPNETMVC\DummyASPNETMVC\Models\Person.cs(12,39,12,41): error CS1513: } expected
1>C:\dev\C#\DummyASPNETMVC\DummyASPNETMVC\Models\Person.cs(14,2,14,2): error CS1513: } expected
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
取消对 getter 和 setter 的注释将使一切恢复正常。
我想知道,因为这在控制台应用程序中工作正常。哪里不一样了?
感谢Panagiotis and Tetsuya。是c#的版本。
参考this question,你要做三件事:
- 通过 Nuget 包管理器卸载 "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" 并重新安装最新版本(当前为 1.0.4)
- 在此之后,将 Microsoft.Net.Compilers 更新到最新版本(当前为 2.2.0)
- 通过项目 "properties < build < advanced" 将 c# 语言更改为版本 7。
完成。
我通常将 VS 2017 用于控制台应用程序。但现在我必须创建一个新的 ASP.NET MVC 项目并发现了一些奇怪的东西。
自动生成 getter 和 setter(上下文菜单 "Quick actions and refactoring < Ecapsulate field (and use property)")会引发编译错误。举个简单的例子:
public class Person
{
private string firstname;
public string Firstname { get => firstname; set => firstname = value; }
}
错误信息:
1>------ Build started: Project: DummyASPNETMVC, Configuration: Debug Any CPU ------
1>C:\dev\C#\DummyASPNETMVC\DummyASPNETMVC\Models\Person.cs(12,39,12,41): error CS1043: { or ; expected
1>C:\dev\C#\DummyASPNETMVC\DummyASPNETMVC\Models\Person.cs(12,39,12,41): error CS1513: } expected
1>C:\dev\C#\DummyASPNETMVC\DummyASPNETMVC\Models\Person.cs(14,2,14,2): error CS1513: } expected
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
取消对 getter 和 setter 的注释将使一切恢复正常。
我想知道,因为这在控制台应用程序中工作正常。哪里不一样了?
感谢Panagiotis and Tetsuya。是c#的版本。
参考this question,你要做三件事:
- 通过 Nuget 包管理器卸载 "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" 并重新安装最新版本(当前为 1.0.4)
- 在此之后,将 Microsoft.Net.Compilers 更新到最新版本(当前为 2.2.0)
- 通过项目 "properties < build < advanced" 将 c# 语言更改为版本 7。
完成。