ในกรณีของฉันฉันมีปัญหานี้เกิดขึ้นเฉพาะบนพีซีของฉันสำหรับโครงการเดียวเท่านั้น โครงการของฉันทำงานได้ดีใน VS2012 แต่เมื่อเปิดใน VS2017 พบว่ามีปัญหานี้
ปัญหาหลักสำหรับฉันที่นี่คือแคช โครงการของฉันชี้ไปที่ dll รุ่นเก่าที่แคชไว้สำหรับ Razor และ MVC และไม่พบคุณสมบัติที่เพิ่มในเวอร์ชันที่ใหม่กว่าเช่น ViewBag ViewBag ถูกเพิ่มใน Razor เวอร์ชัน 3 แต่เนื่องจากฉันมี Razor เวอร์ชัน 2 ที่แคชไว้จึงไม่พบ ViewBag (แต่สามารถค้นหาสิ่งอื่น ๆ ที่มีอยู่ในเวอร์ชัน 2 ได้) อย่างไรก็ตามการล้างแคชเหมือนในคำตอบที่ยอมรับไม่ได้ช่วยแก้ปัญหาของฉัน เราต้องเปลี่ยนไฟล์กำหนดค่าเพื่อบอกว่า "ใช้เวอร์ชัน 3 แทน 2" สำหรับ Razor และ "ใช้เวอร์ชัน 5 แทน 4" สำหรับ MVC จากนั้นปิด VS ลบแคชและเปิดโปรเจ็กต์และสร้างใหม่ จากนั้นสิ่งต่างๆได้รับการแก้ไข ด้านล่างนี้เป็นคำแนะนำโดยละเอียดเพิ่มเติม
นี่คือลำดับของการเปลี่ยนแปลงที่ช่วยฉันแก้ไขปัญหา:
- ใน Web.config ของโฟลเดอร์ "Views" เปลี่ยนตำแหน่งทั้งหมดที่
- เวอร์ชัน MVC ถูกตั้งค่าเป็น 4.0.0.0 ถึง 5.0.0.0
- รุ่น Razor ถูกตั้งค่าเป็น 2.0.0.0 ถึง 3.0.0.0
นี่คือบรรทัดเหล่านั้นในกรณีของฉัน:
<sectionGroup name="system.web.webPages.razor" type="... Version=3.0.0.0 ...">
<section name="host" type="... Version=3.0.0.0 ..." .../>
<section name="pages" type="... Version=3.0.0.0 ..." .../>
</sectionGroup>
...
<host factoryType="... System.Web.Mvc, Version=5.0.0.0 ..." />
...
<pages
...
pageParserFilterType="... Version=5.0.0.0 ..."
pageBaseType="... Version=5.0.0.0 ..."
userControlBaseType="... Version=5.0.0.0 ...">
<controls>
<add assembly="... Version=5.0.0.0 ..." ... />
</controls>
</pages>
(หมายเหตุ: 1) เวอร์ชันของคุณอาจแตกต่างออกไปฉันแค่บอกสิ่งที่ต้องทำในกรณีของฉัน 2) ฉันละเว้นบางสิ่งด้วย "... " เพื่อความกะทัดรัด 3) แม้ว่าคุณจะมีเวอร์ชัน MVC เช่น 5.3.2.0 คุณควรป้อน 5.0.0.0 เช่นเดียวกับเวอร์ชันของ Razor - ป้อนค่าศูนย์ทั้งหมดใน 3.0.0.0)
ในไฟล์กำหนดค่าหลัก (ไฟล์ที่อยู่ระดับบนสุด) เปลี่ยนwebPages:version
จาก 2.0.0.0 เป็น 3.0.0.0
การเปลี่ยนแปลงนี้อาจไม่มีผลต่อการแก้ปัญหา แต่ฉันจะยังคงพูดถึงมัน ตรวจสอบให้แน่ใจว่า<namespaces>
ส่วนของโฟลเดอร์ "Views" มีเนื้อหาเหมือนกับไฟล์. config หลักที่รากของโปรเจ็กต์เช่น:
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
- สุดท้ายปิด VS. ลบไฟล์แคชทั้งหมดใน
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
(หรือเส้นทางที่ถูกต้องของคุณ) เช่นเดียวกับที่แนะนำใน (ปัจจุบัน) คำตอบที่ยอมรับโดย Fenton ลบ.scan
ไฟล์ด้วยแม้ว่าจะไม่ได้ระบุไว้ในคำตอบนั้นก็ตาม เมื่อคุณทำเสร็จแล้วให้เปิด VS ล้างโปรเจ็กต์ของคุณและสร้างใหม่ สิ่งต่างๆควรจะใช้งานได้แล้ว มันได้ผลสำหรับฉัน