วิธีแก้ไขที่เป็นไปได้นำมาจากความคิดเห็นในบล็อกโพสต์ของ ScottGu (ค้นหา "8026" ในหน้า):
ข้อเสนอแนะวิธีแก้ปัญหา 1 (David Taylor)
เพิ่มองค์ประกอบโค้ด RTM เหล่านี้ใน 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>
จากนั้นเพิ่ม Roslyn และ Microsoft.CodeDom.Providers. *. dll ลงในไดเรกทอรี BIN ของคุณ
มันง่ายพอที่จะติดตั้ง แต่ก็แปลกสำหรับฉันที่แม่แบบเริ่มต้นไม่ได้ตั้งค่าไว้ถ้าคุณเลือก. NET 4.6 เมื่อสร้าง "เว็บไซต์" ใหม่ใน VS 2015 RTM
คำแนะนำโซลูชัน 2 (มาร์ติน)
นอกเหนือจากความคิดเห็นของ David Taylor ข้างต้นดูเหมือนว่าการตั้งค่า system.codedom จะถูกต้องเมื่อสร้างเว็บแอปด้วย TargetFramework เป็น v4.5.2 เริ่มต้น การเปลี่ยน TargetFramework เป็น v4.6 ดูเหมือนจะแก้ไขการตั้งค่าคอมไพเลอร์สำหรับ CSharp ในลักษณะที่ทำให้เกิดปัญหา
วิธีแก้ปัญหาของฉันมีดังนี้:
- ไฟล์ / ใหม่ / ASP.NET Web Application
- เลือกเทมเพลต "Web API" จาก ASP.NET 4.5.2 Templates
- ถ่ายสำเนาขององค์ประกอบ system.codedom (และเนื้อหา) ใน web.config
- ใช้ Properties / TargetFramework ตั้ง Target Framework เป็น 4.6
- แทนที่องค์ประกอบ system.codedom ที่แก้ไขแล้วใน web.config ด้วยสำเนาที่ถ่ายก่อนที่จะเปลี่ยน TargetFramework
- ตี F5
หน้าแรกควรโหลดตามที่คาดไว้
สำหรับข้อมูลเนื้อหา system.codedom ทันทีหลังจากเปลี่ยน TargetFramework เป็น v4.6 มีดังนี้ (โปรดสังเกตการใช้ประเภท "Microsoft.CSharp.CSharpCodeProvider"):
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
<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>