就我而言,只有一个项目在我的PC上才发生此问题。我的项目在VS2012中工作正常,但是在VS2017中打开时出现了此问题。
对我来说,这里的主要问题是缓存。我的项目指向的是Razor和MVC的dll的较早缓存版本,并且未找到较新版本(例如ViewBag)中添加的功能。ViewBag是在Razor版本3中添加的,但是因为我缓存了Razor版本2,所以它找不到ViewBag(但是它可以找到版本2中存在的其他内容)。但是,仅像接受的答案那样清除缓存并不能解决我的问题。对于Razor,我们必须更改配置文件以说“使用版本3而不是2”,对于MVC使用“使用版本5而不是4”,然后关闭VS,删除缓存,并打开项目并重建。然后事情就解决了。以下是更详细的说明。
以下是有助于我解决问题的更改顺序:
- 在“视图”文件夹的Web.config中,将所有位置更改为
- MVC版本设置为4.0.0.0至5.0.0.0
- 剃刀版本设置为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)即使您拥有5.3.2.0之类的MVC版本您仍应输入与Razor版本相同的5.0.0.0-在3.0.0.0中输入全零)
在主配置文件(位于顶层的文件)中,webPages:version
从2.0.0.0 更改为3.0.0.0。
此更改可能不会影响解决方案,但我仍会提及。确保“ Views”文件夹的<namespaces>
部分与项目根目录中的主.conifg文件具有完全相同的内容,例如:
<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,清理项目并重建。事情应该被现在的工作。它为我工作。