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

时间:2017-04-28 13:51:14

标签: c# .net c#-7.0

我在课堂上有这段代码

private string test;
public string Test
{
    get =>  test;
    set => test = value;
}

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

CS1043 { or ; expected 
CS1513 } expected

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

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

3 个答案:

答案 0 :(得分:12)

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

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

更新@gsharp

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

答案 1 :(得分:0)

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



<Import Project="$(MSBuildToolsPath)\Workflow.Targets" />
&#13;
&#13;
&#13;

只需删除它就可以了,并且不知道为什么。

答案 2 :(得分:0)

answer marked above是我的可行解决方案。我无法在当前观点上添加评论,但我想与其他可能会发现类似情况的人分享更多信息。

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

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

还有另一个hack /选项。诸如JEnkins,Teamcity之类的工具也可以一步一步安装nuget,this post可能也可以帮助建立它们。