Установлена ​​ли языковая версия C# для каждой конфигурации решения? - PullRequest
1 голос
/ 05 августа 2020

Во время работы над решением VS 2019, содержащим проект, нацеленный на. NET 4.5.2 и другой проект, нацеленный на. NET 4.8, я заметил, что если для конфигурации решения установлено любое значение, кроме «Отладка» ( это конкретное решение имеет конфигурации "DEV", "FEATURE", "QA", "STG" и "PROD") Я вижу в окне списка ошибок VS ошибки, указывающие на то, что "Функция _______ недоступна в C# 7.3. Пожалуйста, используйте языковая версия 8.0 или выше. "

Для справки, ошибки наблюдаются, если здесь выбрана конфигурация, отличная от« Отладка »:

А потом получаю такие ошибки:

Данный проект настроен на использование C# Уровень языка «По умолчанию (автоматическое определение)»:

Я, вероятно, не полностью понимаю, как языковая версия соотносится с различными конфигурациями решения, почему конфигурация «Отладка» использует правильную языковую версию, а другие конфликты - нет. Однако публикация приложения с использованием различных конфигураций решения не приводит к ошибкам языковой версии.

1 Ответ

2 голосов
/ 05 августа 2020

Уровень языка устанавливается в файле проекта. Свойства проекта могут быть специфичными для конфигурации c или могут быть общими. (Обратите внимание, что «конфигурация решения» и «имя конфигурации проекта» также могут различаться, что является дополнительным осложнением.)

Вам следует посмотреть файл проекта - я думаю, вы найдете свойство MSBuild для LangVersion с атрибутом Condition. Удалите атрибут Condition, чтобы это свойство применялось для всех конфигураций.

...