Чи підтримується це?
Якщо так, чи є якийсь фокус, щоб увімкнути його? Я припускаю, що Razor не використовує достатньо новий компілятор ...? IDE VS2015, схоже, добре з ним, але під час виконання я отримую
CS1056: Несподіваний символ "$"
Чи підтримується це?
Якщо так, чи є якийсь фокус, щоб увімкнути його? Я припускаю, що Razor не використовує достатньо новий компілятор ...? IDE VS2015, схоже, добре з ним, але під час виконання я отримую
CS1056: Несподіваний символ "$"
Відповіді:
Оновлення :
Починаючи з Visual Studio 2015 Update 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, це не буде працювати.
Фокус у тому, що аналізатор бритви ще недостатньо розумний, щоб розпізнавати деякі синтаксиси, тому ви повинні обернути все це в дужках (це потрібно зробити, використовуючи нульовий умовний оператор ( ?.
) також у ваших видах бритви).
Тим не менш, інтерполяція рядків у Razor на даний момент у MVC6 трохи глючить , тому я не здивуюся, якщо з цим виникнуть деякі проблеми. інша справа - чи будуть вони вирішені чи ні.
Виконайте наступну команду в консолі Package Manager, щоб додати потрібного 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.