【发布时间】:2014-12-11 23:05:08
【问题描述】:
我进行了 Windows 更新,之后我的 asp.net mvc 5 应用程序将不再加载抱怨
CS0234: The type or namespace name 'Html' does not exist in the namespace 'System.Web.Mvc'
表明我的观点 web.config 有问题
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<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="Ogre.Extensions" />
<add namespace="Newtonsoft.Json"/>
</namespaces>
</pages>
</system.web.webPages.razor>
现在这很令人困惑。在我的项目本身中,我可以看到Html 命名空间,在 ILSpy 中打开我的程序集我可以导航到绑定的System.Web.Mvc,我也可以,并且融合日志没有显示任何可疑的绑定错误。
好像只是我的观点正在(成功地)绑定到旧版本的 Mvc。为什么会发生这种情况?我该如何解决?
让我明确一点,没有任何配置甚至代码更改。这一切都在我在 IISExpress 上的开发机器上。它正在运行,我进行了更新并重新启动,现在它不再运行了。
这是我最近安装的更新。我可以开始一一删除它们,但我想知道实际出了什么问题,因为感觉好像我错过了故事的一部分。
【问题讨论】:
-
你的项目引用还好吗?
-
@DavidG 是的,项目构建得很好,没有损坏的引用
-
@kingdango 可能是相关的,但那里的最佳答案将
System.Web.Mvc重新连接到 GAC 中的 4.0.0.1 而不是我的 nuget 包中的 5.0.0。我不想那样! -
我们注意到我们的 System.Web.Mvc 项目引用现在将 Copy Local 设置为 False 而不是 True。将 Copy Local 设置回 True 可以解决该问题,但没有解释为什么在补丁后更改它。我们有几台带有安全更新的机器,还有几台没有。在任何情况下,那些有更新的人都会打开解决方案(在源代码控制的多个分支中),并且 Copy Local 为 False。对于那些没有打补丁的机器,Copy Local 设置为 True,就像在源代码管理中一样。
标签: asp.net asp.net-mvc windows-update