คำตอบมากมายที่นี่เขียนขึ้นก่อนRoslyn (คอมไพเลอร์. NET C # และ VB แบบโอเพ่นซอร์ส) ย้ายไปที่. NET 4.6 ดังนั้นพวกเขาจะไม่ช่วยคุณหากโครงการเป้าหมายของคุณพูดว่า 4.5.2 ตามที่ฉันทำ (สืบทอดมาและไม่สามารถเปลี่ยนแปลงได้)
แต่คุณสามารถคว้าRoslynรุ่นก่อนหน้าได้จากhttps://www.nuget.org/packages/Microsoft.Net.Compilersและติดตั้งแทนเวอร์ชันล่าสุด ฉันใช้ 1.3.2 (ฉันลอง 2.0.1 - ซึ่งดูเหมือนจะเป็นรุ่นล่าสุดที่ทำงานบน. NET 4.5 - แต่ฉันไม่สามารถรวบรวมมันได้) เรียกใช้สิ่งนี้จากคอนโซล Package Manager ใน VS 2013:
PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2
จากนั้นเริ่ม Visual Studio ใหม่ ตอนแรกฉันมีปัญหาสองอย่าง คุณต้องตั้งค่าเวอร์ชัน C # กลับไปเป็นค่าเริ่มต้น (C # 6.0 ไม่ปรากฏในรายการรุ่น แต่ดูเหมือนว่าจะเป็นค่าเริ่มต้น) จากนั้นล้างบันทึกบันทึกรีสตาร์ท VS และคอมไพล์ใหม่
น่าสนใจฉันไม่มีข้อผิดพลาด IntelliSense เนื่องจากคุณสมบัติ C # 6.0 ที่ใช้ในรหัส (ซึ่งเป็นสาเหตุของการต้องการ C # 6.0 ตั้งแต่แรก)
* รุ่น 2.0.1 เกิดข้อผิดพลาดงาน "Microsoft.CodeAnalysis.BuildTasks.Csc ไม่สามารถโหลดจากชุดประกอบ Microsoft.Build.Tasks.CodeAnalysis.dll ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'Microsoft.Build.Utilities.Core, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'หรือการอ้างอิงอย่างใดอย่างหนึ่งระบบไม่พบไฟล์ที่ระบุยืนยันว่าการประกาศนั้นถูกต้องว่าแอสเซมบลีและการอ้างอิงทั้งหมดมีอยู่และงานนั้นมี คลาสสาธารณะที่ใช้ Microsoft.Build.Framework.ITask
อัปเดตสิ่งหนึ่งที่ฉันสังเกตเห็นตั้งแต่โพสต์คำตอบนี้คือถ้าคุณเปลี่ยนรหัสใด ๆ ในระหว่างการดีบัก ("แก้ไขและดำเนินการต่อ") คุณจะพบว่ารหัส C # 6.0 ของคุณจะแสดงเป็นข้อผิดพลาดในสิ่งที่ดูเหมือนจะย้อนกลับไป สภาพแวดล้อม pre-C # 6.0 สิ่งนี้ต้องการการรีสตาร์ทเซสชันการดีบักของคุณ น่ารำคาญมากโดยเฉพาะกับเว็บแอปพลิเคชัน