Выражение функции get/set accessors в С# 7.0
У меня есть этот код в классе
private string test;
public string Test
{
get => test;
set => test = value;
}
Но компилятор не позволит мне скомпилировать. В нем говорится:
CS1043 { or ; expected
CS1513 } expected
Я использую VS 2017 и настраиваю .NET FW 4.6 с проектом MVC 5
Любая идея, почему она не работает?
Ответы
Ответ 1
Вы должны установить компилятор в версию 7 в проекте.
Свойства проекта → (вкладка) Сборка → Дополнительно → Языковая версия = С# 7.0
UPDATE BY @gsharp
проверьте также свою (NuGet) ссылку на платформу .NET Compiler Microsoft.Net.Compilers
.
Ответ 2
У меня была та же проблема. Я сравнил свой проект с другим проектом, который был в порядке, и нашел эту строку из .csproj в результате проблемы.
<Import Project="$(MSBuildToolsPath)\Workflow.Targets" />
Ответ 3
Ответ , отмеченный выше, является для меня рабочим решением. Я не мог добавить комментарии с моими текущими баллами, но я подумал о том, чтобы поделиться немного больше информации для тех, кто может найти похожую ситуацию, как я.
В моем случае мы используем сборки Teamcity для запуска решения, и оно работало (шаг MS Build) с использованием Microsoft Visual Studio 2015. К счастью, у нас также есть Microsoft Visual Studio 2017 в разделе Visual Studio на этапе сборки. Я выбрал 2017 год, и он прошел успешно.
Для тех, кто использует TeamCity или Jenkins или аналогичные, в первую очередь убедитесь, что на вашем инструменте настроена последняя версия сборки MS/VS, например 2017 или 2019 (будет самой последней). Если нет, сначала получите это, а затем укажите на эту версию.
Там еще один взлом/вариант. Такие инструменты, как JEnkins, Teamcity также могут иметь шаг для установки нюгетов, и этот пост также может помочь установить это.