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

Roslyn feature/patterns branch (С# 7) - Как включить функции экспериментального языка

Я хочу экспериментировать с потенциальными возможностями языка С# 7.

У меня есть виртуальная машина, в которую я загрузил кодовую базу Roslyn (ветки функций/шаблонов) и построил, как описано в Roslyn github здесь: Строительство и тестирование в Windows.

Я могу успешно запустить новый экспериментальный экземпляр Visual Studio (установите VisualStudioSetup в качестве запуска и запустите проект).

Когда я пытаюсь использовать новые функции языка (сопоставление с образцом и локальные функции), я получаю ошибку в редакторе как squiggly, а также ошибку при создании:

Ошибка совпадения шаблонов

Локальная ошибка функции squiggly

Ошибка CS8058 Функция "локальные функции" является экспериментальной и не поддерживается; использовать '/features: localFunctions' для включения.

Ошибка CS8058 Функция "сопоставление образцов" является экспериментальной и не поддерживается; используйте '/features: patterns' для включения.

Где я могу поместить эти параметры?

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

Roslyn Args

Ошибка Roslyn Args

4b9b3361

Ответ 1

Это ошибка 7812, которую я еще не исправил. К сожалению.

Внутренне команда компилятора в основном просто проверяет вещи посредством модульных тестов или компилятора командной строки; если нам действительно нужно протестировать среду IDE, мы просто удалим проверку, передающую флаг функции.

Ответ 2

Извините, я не сделал R & D с указанным кодом, который вы загрузили.

Но в предварительном просмотре Visual Studio '15' (объявленном 30 марта 2016 года) я исправил это очень легко. Это может помочь другим людям.

Я получал ошибку

Ошибка CS8058 Функция "локальные функции" является экспериментальной и неподдерживаемой; использовать '/features: localFunctions' для включения.

Чтобы исправить это, выберите название проекта и щелкните правой кнопкой мыши → Окно свойств → Сборка, а затем добавьте следующие два параметра в текстовое поле "Условные символы компиляции" __ DEMO __, __ DEMO_EXPERIMENTAL __

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

нажмите кнопку "Сохранить", чтобы сохранить его. Теперь создайте приложение, и ваша сборка будет успешной.

Несмотря на то, что в конце, если я добавлю один из __ DEMO__ и __DEMO_EXPERIMENTAL __, он работает нормально.

Ответ 3

Я нашел способ включить новые языковые функции.

Проследив код, я обнаружил, где выполняется проверка функции (функция IsFeatureEnabled), и изменил ее, чтобы всегда возвращать true.

Затем я перестроил из командной строки, как и раньше. И после этого новые возможности языка активируются, когда я запускаю экспериментальный экземпляр Visual Studio.

ДО:

Функция останова точки

ПОСЛЕ:

internal bool IsFeatureEnabled(MessageID feature)
{
    // Force all demo features:
    return true;

    // in "demo" mode enable all language features.
    if (PreprocessorSymbols.Contains("__DEMO__"))
    {
        return true;
    }