Azure Devops Pipeline получает ошибку «литерал по умолчанию» при сборке Pipeline

У меня есть стандартный агент конвейера, который работает для CI всякий раз, когда запрос на вытягивание объединяется с мастером. Он работал нормально, пока я не объединил запрос на вытягивание, созданный веткой, разработанной visual-studio-2019. Теперь я получаю

ошибка CS8107: функция "литерал по умолчанию" недоступна в C# 7.0. Пожалуйста, используйте языковую версию 7.1 или выше.

Он отлично работает, когда я вношу любые изменения с vs2017.

Что мне делать, чтобы избежать этой ошибки?

P.S: я хочу продолжать использовать vs2019

Заранее спасибо.


person ilkerkaran    schedule 19.04.2019    source источник


Ответы (2)


Это происходит, когда у вас есть код, подобный следующему:

MyType foo = default; // assign the default value for this type

В C# 7 поддерживается следующий синтаксис:

MyType foo = default(MyType);

но более простая форма была добавлен в версии 7.1.

Есть два способа исправить это:

  1. Не используйте новую форму. Измените все существующие экземпляры default, чтобы они имели тип, и измените настройки, чтобы среда IDE предпочитала подробную форму. Вот изображение с включенной новой формой, просто измените «Да» на «Нет»: Инструменты-›Настройка параметров для выражения Если вы используете файлы .editorconfig, вы можете настроить параметр csharp_prefer_simple_default_expression .
  2. Установите языковую версию для вашего проекта быть достаточно высоким для поддержки нового синтаксиса. Имейте в виду, что если вы установите для него значение latest, он может использовать другую версию между вашим блоком разработки (VS2019) и вашим агентом сборки (например, возможно, все еще на VS2017).
person Jimmy    schedule 20.04.2019

Я только что решил эту проблему, обновив свой пул агентов в конвейере сборки, чтобы использовать «Размещенную Windows 2019 с VS2019».

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

person Hard Tour Vela    schedule 08.08.2019