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 的步骤, 也可能有助于建立它。
我在 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 的步骤,