2017-02-06 10 views
2

У меня есть следующий код:CS0840 Ошибка в MSBuild, но не в VS2015

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

Я получаю следующее сообщение об ошибке:

TestFile.cs(11,32): error CS0840: 'NS.ClassName.PropertyName.get' must declare a body because it is not marked abstract or extern. Automatically implemented properties must define both get and set accessors.

При компиляции в VS2015 все работает хорошо. При попытке создания с использованием MSBuild происходит ошибка.

Я компилирую для .NET 4.6.2 с C# 6.0 и ToolsVersion 14.0.

Что мне не хватает?

+0

Покажите нам код ... (хотя я подозреваю, что MSBuild старый и пытается скомпилировать с C# v5) – DavidG

ответ

4

Что почти наверняка происходит здесь, так это то, что ваша версия MSBuild устарела и скомпилирована против версии 5 C#. Рассмотрим следующий код: (., А также, если вы использовали VS2013)

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

    public int Bar { get; } 
} 

Это будет компилировать счастливо в C# 6 (то есть VS2015), но отбросит ошибку вы испытываете от MSBuild

Если вы хотите скомпилировать с MSBuild, то вам нужно загрузить и установить обновленные средства сборки: https://www.microsoft.com/en-us/download/details.aspx?id=48159

+0

Я загрузил новый инструмент сборки, но по какой-либо причине он (приложение с автоматическим построением) использовал тот, который поставляется с картой .net. благодаря –