При использовании Visual Studio Enterprise 16.3.7
на двух отдельных машинах один строит нормально, а другой выдает ошибку:
Функция «использование объявлений» недоступна в C # 7.3. Пожалуйста, используйте языковую версию 8.0 или выше.
Это может быть легко решена на рабочей машине ни один, установив LangVersion
в .csproj
качестве предлагаемых здесь https://stackoverflow.com/a/48085575/3850405 или пусть Visual Studio автоматически исправить это как экран печати выше.
<LangVersion>8.0</LangVersion>
Что я не могу понять, так это то, почему одна машина прекрасно работает без этой строки, .csproj
а другая нуждается в ней?
dotnet --list-sdks
показывает?.NET Framework 4.6.1
иLangVersion
не установлена.Ответы:
Я получил ту же ошибку, но я просто забыл включить
атрибут во всех файлах .csproj в решении. Ниже приведены мои текущие настройки C # 8:
Я нашел следующие документы наиболее полезными при переходе с ядра 2.2 на 3.x:
MSDN 2.2 -> 3.0
MSDN 3.0 -> 3.1
источник
<LangVersion>latest</LangVersion>
вместо<LangVersion>8.0</LangVersion>
MSDN 2.2 -> 3.0
предназначена для ссылки на следующее: docs.microsoft.com/en-us/aspnet/core/migration/22-to-30 Я попытался отредактировать ответ, чтобы изменить его, но «предложил редактировать очередь полон ", поэтому будет публиковать здесь вместо.Мне пришлось обновить Visual Studio до версии с 16.3.X до 16.4.2. Это решило проблему, и мне не нужно было добавлять LangVersion.
Кредиты: https://github.com/aspnet/AspNetCore.Docs/issues/16047.
источник
Это может быть потому, что компилятор по умолчанию использует разные версии языка C # для разных целевых фреймворков.
Чтобы переопределить язык C # по умолчанию, добавьте в файл проекта (как предложено в вопросе):
или:
См. Версии языка C # для версий языка C # по умолчанию для различных целевых структур и как вручную выбрать версию языка C #.
См. Также ответ о переполнении стека. Поддерживает ли C # 8 .NET Framework? для получения дополнительной информации по этой теме.
Вот часть статьи о версии языка C # :
Управление версиями на языке C #
Последний компилятор C # определяет версию языка по умолчанию на основе целевой платформы или структур вашего проекта. Это связано с тем, что язык C # может иметь функции, основанные на типах или компонентах среды выполнения, которые недоступны в каждой реализации .NET. Это также гарантирует, что для любой цели, против которой построен ваш проект, вы получите версию наивысшей совместимости по умолчанию.
Правила в этой статье применяются к компилятору, поставляемому с Visual Studio 2019 или .NET Core 3.0 SDK. Компиляторы C #, которые являются частью установки Visual Studio 2017 или более ранних версий .NET Core SDK, по умолчанию предназначены для C # 7.0.
Значения по умолчанию
Компилятор определяет значение по умолчанию на основе этих правил:
Переопределить значение по умолчанию
Если вам необходимо явно указать версию C #, вы можете сделать это несколькими способами:
Редактировать файл проекта
Вы можете установить языковую версию в вашем файле проекта. Например, если вы явно хотите получить доступ к функциям предварительного просмотра, добавьте такой элемент:
Значение
preview
использует последнюю доступную предварительную версию языка C #, которую поддерживает ваш компилятор.Настроить несколько проектов
Чтобы настроить несколько проектов, вы можете создать файл Directory.Build.props , содержащий
<LangVersion>
элемент. Вы обычно делаете это в своем каталоге решений. Добавьте следующее в файл Directory.Build.props в каталоге вашего решения:Теперь сборки в каждом подкаталоге каталога, содержащего этот файл, будут использовать предварительную версию C #. Для получения дополнительной информации см. Статью « Настройка сборки» .
источник
Я скачал последнюю версию .Net Core 3.0 и 3.1 и имел ту же проблему. Мне показалось, что исправление загружает последнее обновление для Visual Studio 2019 (до версии 16.4.2).
Это также перезагрузило мой компьютер, и ошибка ушла.
источник