在新的VS Studio 2017 ASP.NET MVC 5.2.3项目中使用C#7功能时编译错误

yes*_*ime 5 c# asp.net asp.net-mvc c#-7.0 visual-studio-2017

我通常使用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; }
}
Run Code Online (Sandbox Code Playgroud)

错误信息:

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 ==========
Run Code Online (Sandbox Code Playgroud)

取消注释getter和setter将使事情再次发挥作用.

我想知道因为这在控制台应用程序中工作正常.这里的区别在哪里?

yes*_*ime 12

感谢PanagiotisTetsuya.这是c#的版本.

作为对这个问题的参考,你必须做三件事:

  1. 通过Nuget Package Manager卸载"Microsoft.CodeDom.Providers.DotNetCompilerPlatform"并重新安装最新版本(目前为1.0.4)
  2. 在此之后,将Microsoft.Net.Compilers更新到最新版本(目前为2.2.0)
  3. 通过项目"properties <build <advanced"将c#语言更改为版本7.

完成.