【问题标题】:Error CS0840 in MSBuild but not in VS2015MSBuild 中的错误 CS0840 但在 VS2015 中没有
【发布时间】:2017-06-23 11:50:59
【问题描述】:

我有以下代码:

    namespace NS{
    public class ClassName{
        public PropertyName{get;}
}
}

我收到以下错误:

TestFile.cs(11,32): 错误 CS0840: 'NS.ClassName.PropertyName.get' 必须 声明一个主体,因为它没有标记为抽象或外部。 自动实现的属性必须同时定义 get 和 set 访问器。

在 VS2015 中编译时一切正常。尝试使用 MSBuild 构建时会发生错误。

我正在使用 C# 6.0 和 ToolsVersion 14.0 针对 .NET 4.6.2 进行编译。

我错过了什么?

【问题讨论】:

  • 向我们展示代码...(尽管我怀疑 MSBuild 已经过时并尝试使用 C# v5 进行编译)

标签: c# .net visual-studio-2015 compiler-errors msbuild


【解决方案1】:

几乎可以肯定的是,您的 MSBuild 版本过旧,并且正在针对 C# 版本 5 进行编译。考虑这段代码:

public class Foo
{
    public Foo()
    {
        Bar = 1;
    }

    public int Bar { get; }
}

这将在 C# 6(即 VS2015)中顺利编译,但会抛出您在 MSBuild 中遇到的错误(以及如果您使用 VS2013。)

如果您想使用 MSBuild 进行编译,则需要下载并安装更新的构建工具:https://www.microsoft.com/en-us/download/details.aspx?id=48159

【讨论】:

  • 我下载了新的构建工具,但由于某种原因它(一个自动构建应用程序)使用了 .net 框架附带的那个。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多