Это поддерживается?
Если да, есть ли какой-нибудь трюк для его включения? Я предполагаю, что Razor не использует достаточно новый компилятор ...? IDE VS2015, кажется, в порядке, но во время выполнения я получаю
CS1056: Неожиданный символ "$"
Это поддерживается?
Если да, есть ли какой-нибудь трюк для его включения? Я предполагаю, что Razor не использует достаточно новый компилятор ...? IDE VS2015, кажется, в порядке, но во время выполнения я получаю
CS1056: Неожиданный символ "$"
Ответы:
Обновление :
Начиная с 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.