C# 7.0 中的表达式主体获取/设置访问器功能

Expression bodied get / set accessors feature in c# 7.0

我在 class

中有此代码
private string test;
public string Test
{
    get =>  test;
    set => test = value;
}

但是编译器不让我编译。它说

CS1043 { or ; expected 
CS1513 } expected

我正在使用 VS 2017 并使用 MVC 5 项目定位 .NET FW 4.6

知道为什么它不起作用吗?

您必须在项目中将编译器设置为版本 7。

项目属性 →(选项卡)生成 → 高级 → 语言版本 = C# 7.0

@gsharp更新

还要检查您对 .NET 编译器平台的 (NuGet) 引用 Microsoft.Net.Compilers

我遇到了同样的问题。我将我的项目与另一个正常的项目进行了比较,发现 .csproj 中的这一行导致了问题。

<Import Project="$(MSBuildToolsPath)\Workflow.Targets" />

简单地删除它,它起作用了,不知道为什么。

是适合我的解决方案。我无法用我目前的观点添加评论,但我想与其他可能遇到像我一样情况的人分享更多信息。

就我而言,我们正在使用 Teamcity 构建 运行 解决方案,它是 运行ning(MS 构建步骤)使用 Microsoft Visual Studio 2015。幸运的是我们还有Microsoft Visual studio 2017 在构建步骤的 Visual studio 部分。我选择了 2017,它 运行 成功了。

对于使用 TeamCity 或 Jenkins 或类似工具的任何人,首先要确保您的工具是否配置了最新的 MS build/VS 构建版本,例如 2017 或 2019(最新)。如果不是,请先获取它,然后指向该版本。

还有一个 hack/option。像 JEnkins、Teamcity 这样的工具也可以有一个安装 nugets 的步骤, 也可能有助于建立它。