Bu destekleniyor mu?
Eğer öyleyse, onu etkinleştirmenin bir hilesi var mı? Razor'un yeterince yeni bir derleyici kullanmadığını varsayıyorum ...? VS2015 IDE bununla iyi görünüyor ama çalışma zamanında alıyorum
CS1056: Beklenmeyen karakter '$'
Bu destekleniyor mu?
Eğer öyleyse, onu etkinleştirmenin bir hilesi var mı? Razor'un yeterince yeni bir derleyici kullanmadığını varsayıyorum ...? VS2015 IDE bununla iyi görünüyor ama çalışma zamanında alıyorum
CS1056: Beklenmeyen karakter '$'
Yanıtlar:
Güncelleme :
Visual Studio 2015 Güncelleştirme 1'den başlayarak, GUI'de aşağıdaki adımları sizin için gerçekleştirebileceğiniz basit bir işlem vardır. Web projenize sağ tıklayın ve "C # 6 / VB 14'ü Etkinleştir" seçeneğini seçin. " C # 6 / VB 14'ü etkinleştirmek için yeni özellik " adlı MSDN blog gönderisinde daha fazla bilgi mevcuttur .
Bu cevap yazıldığı için bu işlevsellik bir NuGet paketinin yardımıyla eklenmiştir.
MVC5 kullanıyorsanız bu Nuget paketini çözümünüze ekleyin.
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
NuGet paketi web.config dosyanızı değiştirmelidir, ancak aşağıdaki yapılandırmanın web.config dosyanızda (ve eklenmemişse) olup olmadığını kontrol edin:
<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'da bu yerleşiktir.
Orijinal cevap:
<div>
@($"Hello {this.Model.SomeProperty}")
</div>
Bu yalnızca MVC6 ile C # 6'da çalışır. MVC5'i C # 6 derleyicisiyle çalıştırıyor olsanız bile çalışmayacaktır.
İşin püf noktası, ustura ayrıştırıcısının henüz bazı sözdizimlerini tanıyacak kadar akıllı olmamasıdır, bu nedenle her şeyi parantez içine almanız gerekir (bunu ?.
, jilet görünümlerinizde null-koşullu operatör ( ) kullanırken de yapmalısınız ).
Bununla birlikte, Razor'daki dize enterpolasyonu şu anda MVC6'da biraz hatalı , bu yüzden onunla ilgili bazı sorunlar olsaydı şaşırmam. bunların ele alınıp alınmayacağı başka bir konudur.
Projenize gerekli bir sağlayıcı eklemek için Paket Yöneticisi Konsolunda aşağıdaki komutu çalıştırınCodeDom
. Gerekli ayarları web.config
eklemek için dosyanızı otomatik olarak değiştirecektir CodeDom
.
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Tekrar başlat Visual Studio
Not: As @Jake varsa, bu cevap altında yaptığı açıklamada söz DotNetCompilerPlatform
zaten paketi sadece güncelleştirilmesi gerekebilir.
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.