Это проект веб-сайта asp.net с .net framework 4.6.2, а уровень языка C# установлен на 6.0. При разработке кода в Visual Studio 2022 приведенный ниже код не может быть распознан.
Console.WriteLine($"Hello {name}");
Поскольку интерполяция строк — это новая функция, представленная в C# 6, а уровень языка в нашем проекте уже установлен на C# 6, почему до сих пор не распознается синтаксисом?
После этого я запускаю команду в консоли Nuget с помощью Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Version 3.6.0
, проблема исчезает.
Почему раньше он не работал с С# 6? Что делает DotNetCompilerPlatform
, чтобы заставить его работать?
Да, .NET Framework 4.6.2. Это всего лишь проект веб-сайта, а не веб-приложение.
Что ж, у меня есть только .NET Framework 4.6 (.0) для тестирования, а не 4.6.2, поэтому я установлю 4.6.2, чтобы посмотреть, смогу ли я воспроизвести его там.
Я также не могу воспроизвести с .NET Framework 4.6.2. Почему вы явно устанавливаете языковую версию на 6, а не просто используете последнюю?
Это ошибка, которая появляется при редактировании кода в Visual Studio, или это ошибка компилятора, когда вы пытаетесь создать свой код? ... хотя мой строит и работает с этими условиями без проблем.
Привет @ProgrammingLlama, потому что у нас есть только .net framework 4.6.2 на сервере Windows. Максимальный поддерживаемый язык C# — C#6, поэтому мы устанавливаем его там. Это ошибка при редактировании кода.
Ну, я не могу воспроизвести это в Visual Studio 2022. У вас установлены какие-либо расширения?
Наконец-то я это понял и делюсь с вами, кто может столкнуться с той же проблемой.
.Net Framework 4.6.2 уже поддерживает синтаксис C# 6, включая интерполяцию строк.
Если это консольное приложение, по умолчанию оно будет использовать компилятор (Roslyn) .Net Framework 4.6.2, который уже поддерживает C# 6. Все в порядке. Но если это проект веб-сайта asp.net, поскольку код C# не скомпилирован в VisualStudio, вместо этого он будет скомпилирован в IIS при получении первого HTTP-запроса. По умолчанию IIS не будет использовать Roslyn для компиляции веб-сайта. Итак, нам нужно указать IIS использовать определенный компилятор для поддержки C#6. Вот почему мы должны запустить команду ниже
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Version 3.6.0
Пока мы пишем код C# веб-сайта asp.net в Viusal Studio, он также может иметь аналогичный механизм, поэтому он показывает красную линию волны, чтобы сообщить об ошибке.
Вы также видите это с .NET Framework 4.6? Я создал проект .NET Framework 4.6 и установил версию языка С# на 6, и я не могу воспроизвести проблему.