Подтвердить что ты не робот

Имя "nameof" не существует в текущем контексте

Я использую VS 2013 с .Net Framework 4.6. Я хочу использовать новые функции С# 6 (например, nameof). Но я не смог его найти.

введите описание изображения здесь

Должен ли я использовать VS 2015? Или выше .Net Framework?

4b9b3361

Ответ 1

Да, для использования функций С# 6 вам нужен компилятор С# 6. Visual Studio 2013 не имеет компилятора С# 6. Visual Studio 2015 делает.

Были выпуски Roslyn для Visual Studio 2013, но они не реализуют окончательный С# 6: они фактически не реализуют все функции, а то, что они реализуют, отличается от окончательного поведения С# 6.

Ответ 3

Вы не сможете использовать С# 6 в VS2013. Компилятор не поймет новый синтаксис С# 6, который вы пытаетесь использовать. Как добавить С# 6.0 в Visual Studio 2013?

Ответ 4

В pre-VS2015 вы можете добавить следующий класс в свое решение и заменить все экземпляры nameof( на NameOf.nameof(() =>, как предложено в получить имя переменной или параметра

using System;
using System.Linq.Expressions;

namespace ICSharpCode.SharpZipLib
{
    public class NameOf
    {
        public static String nameof<T>(Expression<Func<T>> name)
        {
            MemberExpression expressionBody = (MemberExpression)name.Body;
            return expressionBody.Member.Name;
        }
    }
}

Ответ 5

Если вы получаете эту ошибку в Teamcity, внесите следующие изменения, чтобы создать шаг для ее исправления.

  • Откройте свой шаг MSBuild в teamcity
  • Измените версию MSBuild на Microsoft Build Tools 2015
  • Измените MSBuild ToolVersion на 14.0

Ответ 6

  • В "Консоль диспетчера пакетов" выполните "install-package Microsoft.Net.Compilers" с выбранным вашим проектом.
  • Убедитесь, что в настройках проекта "С# Language Level" - "С# 6.0".