สิ่งนี้รองรับหรือไม่
ถ้าเป็นเช่นนั้นมีเคล็ดลับในการเปิดใช้งานหรือไม่? ฉันสมมติว่า Razor ไม่ได้ใช้คอมไพเลอร์ใหม่เพียงพอ ... ? VS2015 IDE ดูเหมือนจะใช้ได้ แต่ในขณะรันไทม์ฉันได้รับ
CS1056: อักขระที่ไม่คาดคิด '$'
สิ่งนี้รองรับหรือไม่
ถ้าเป็นเช่นนั้นมีเคล็ดลับในการเปิดใช้งานหรือไม่? ฉันสมมติว่า Razor ไม่ได้ใช้คอมไพเลอร์ใหม่เพียงพอ ... ? VS2015 IDE ดูเหมือนจะใช้ได้ แต่ในขณะรันไทม์ฉันได้รับ
CS1056: อักขระที่ไม่คาดคิด '$'
คำตอบ:
อัปเดต :
เริ่มต้นใน Visual Studio 2015 Update 1 มีกระบวนการง่ายๆใน GUI เพื่อทำตามขั้นตอนด้านล่างสำหรับคุณ เพียงคลิกขวาที่โครงการเว็บของคุณแล้วเลือก "เปิดใช้งาน 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 Consoleเพื่อเพิ่ม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.