Benim durumumda, bu sorunu yalnızca bilgisayarımda yalnızca bir proje için yaşadım. Projem VS2012'de iyi çalıştı ancak VS2017'de açıldığında bu sorunu yaşıyordu.
Benim için buradaki ana sorun önbellekti. Projem Razor ve MVC için dll'nin eski önbelleğe alınmış sürümlerine işaret ediyordu ve ViewBag gibi daha yeni sürümlerde eklenen özellikleri bulamıyordu. ViewBag, Razor sürüm 3'te eklendi, ancak Razor sürüm 2'yi önbelleğe aldığım için ViewBag'i bulamadı (ancak sürüm 2'de bulunan diğer şeyleri bulabilirdi). Ancak, kabul edilen cevapta olduğu gibi önbelleği temizlemek sorunumu çözmedi. Yapılandırma dosyalarını Razor için "2 yerine sürüm 3 kullan" ve MVC için "4 yerine sürüm 5 kullan" diyecek şekilde değiştirmemiz, ardından VS'yi kapatmamız, önbelleği kaldırmamız ve projeyi açıp yeniden oluşturmamız gerekiyordu. Sonra işler düzeldi. Aşağıda daha ayrıntılı talimatlar bulunmaktadır.
Sorunumu çözmeme yardımcı olan değişiklik dizisi:
- "Görünümler" klasörünün Web.config dosyasında,
- MVC sürümü 4.0.0.0 ila 5.0.0.0 olarak ayarlanmıştır
- Razor sürümü 2.0.0.0 ila 3.0.0.0 olarak ayarlandı
İşte benim durumumdaki şu satırlar:
<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>
(notlar: 1) sürümleriniz farklı olabilir, sadece benim durumumda ne yapılması gerektiğini söylüyorum 2) Kısaca "..." ile bazı şeyleri atladım 3) MVC sürümünüz 5.3.2.0 gibi bir şey olsa bile Razor'un sürümüyle aynı olan 5.0.0.0'ı girmelisiniz - 3.0.0.0'da tüm sıfırları girin)
Ana yapılandırma dosyasında (en üst düzeydeki) webPages:version
2.0.0.0'dan 3.0.0.0'a değişir .
Bu değişiklik muhtemelen çözümü etkilemedi ama yine de bahsedeceğim. "Görünümler" klasörünün <namespaces>
bölümünün, projenin kök dizinindeki ana .conifg dosyasıyla tam olarak aynı içeriğe sahip olduğundan emin olun, örneğin:
<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>
- Son olarak, VS'yi kapatın.
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
Fenton tarafından (şu anda) kabul edilen cevapta önerildiği gibi (veya doğru yolunuz ne olursa olsun) tüm önbellek dosyalarını silin . Ayrıca .scan
yanıtta bahsedilmese bile dosyayı silin . İşiniz bittiğinde VS'yi açın, Projenizi temizleyin ve Yeniden Oluşturun. Yapılacaklar gerektiğini an çalışmıyor. Benim için çalıştı.