потому что ты имеешь дело с неизменным рослин здесь :)
ал другие вопросы, связанные с этим, но ни один, кажется, не совсем то, что я ищу.
У меня есть сайт, работающий на ASP.NET Core с новой структурой проекта в VS2017. Файлы кода, использующие функции C # 7, компилируются нормально. Но попытка использовать эти функции в представлении приводит к серии ошибок в синтаксисе. Я попытался установить Roslyn, чтобы использовать его при компиляции представлений, поскольку, насколько я могу судить, функции C # 7 доступны в пакете Roslyn nuget 2.x и выше. Но теперь я получаю отзыв, который явно говорит
ошибка CS8059: функция «объявление переменных» недоступна в C # 6. Пожалуйста, используйте языковую версию 7 или выше.
Раньше я проверял web.config, но в проекте ASP.NET Core нет web.config, кроме почти пустого в корне для обработки запроса из IIS.
Как мне указать, что мои представления должны быть скомпилированы с Roslyn, так как это не делается до времени выполнения? По крайней мере, я предполагаю, что это решит мою проблему на этом этапе.
Редактировать: Этот вопрос не является дубликатом этого, как я уже упоминал в начале, я также искал существующие вопросы. Это специально включает функции C # 7 в вашем приложении во время компиляции и только для приложения ASP.NET. Я использую ASP.NET Core, в котором нет файла web.config, в котором определены какие-либо параметры компиляции. Кроме того, что я пытаюсь сделать это для представлений, которые компилируются во время выполнения и могут быть в другой системе.
Решение:
Для тех, кто заинтересован, Вы должны добавить Roslyn в свой проект (который я знал), но вы также должны настроитьRazorViewEngineOptions
использоватьCSharpParseOptions
с указанием языковой версии (по умолчанию 6). Я сделал это, но я не сделал это правильно. Мне нужно было назначить результатWithLanguageVersion()
обратно надParseOptions
заменить их.
services.AddMvc().AddRazorOptions(options => options.ParseOptions = options.ParseOptions.WithLanguageVersion(LanguageVersion.CSharp7));