Это поддерживается?
Если да, есть ли какой-нибудь трюк для его включения? Я предполагаю, что Razor не использует достаточно новый компилятор ...? IDE VS2015, кажется, в порядке, но во время выполнения я получаю
CS1056: Неожиданный символ "$"
c#
asp.net-mvc
razor
c#-6.0
Тим Шмидт
источник
источник
Ответы:
Обновление :
Начиная с Visual Studio 2015 с обновлением 1, в графическом интерфейсе пользователя есть простой процесс для выполнения описанных ниже действий за вас. Просто щелкните свой веб-проект правой кнопкой мыши и выберите «Включить C # 6 / VB 14». Дополнительная информация доступна в сообщении блога MSDN « Новая функция для включения C # 6 / VB 14 ».
Поскольку этот ответ был написан, эта функция была добавлена с помощью пакета NuGet.
Добавьте этот пакет Nuget в свое решение, если вы используете MVC5.
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
Пакет nuget должен изменить ваш web.config, но убедитесь, что в вашем файле web.config есть следующая конфигурация (и если она не добавлена):
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/> </compilers> </system.codedom>
В MVC6 это встроено.
Оригинальный ответ:
<div> @($"Hello {this.Model.SomeProperty}") </div>
Это работает только в C # 6 с MVC6. Даже если вы запускаете MVC5 с компилятором C # 6, это не сработает.
Хитрость в том, что синтаксический анализатор бритвы еще не достаточно умен, чтобы распознавать некоторые синтаксисы, поэтому вы должны заключить все это в круглые скобки (вы должны сделать это и при использовании условного оператора null (
?.
) в ваших представлениях бритвы).При этом, строка интерполяции в Razor является немного глючит на данный момент в MVC6, так что я не удивлюсь , если там были некоторые проблемы с ним. будут ли они рассмотрены или нет - другой вопрос.
источник
Выполните следующую команду в консоли диспетчера пакетов, чтобы добавить в проект необходимого
CodeDom
поставщика. Онweb.config
автоматически изменит ваш файл, чтобы добавить в негоCodeDom
необходимые настройки.Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Начать сначала
Visual Studio
Примечание.Как сказал @Jake в своем комментарии под этим ответом, если у вас уже есть
DotNetCompilerPlatform
пакет, его, возможно, просто нужно обновить.источник
Replacement CodeDOM providers that use the new .NET Compiler Platform ("Roslyn") compiler as a service APIs. This provides support for new language features in systems using CodeDOM (e.g. ASP.NET runtime compilation) as well as improving the compilation performance of these systems.