命名空间'System.Web'中不存在类型或命名空间名称'Mvc'
将Hybrid ASP.NET MVC1应用程序转换为MVC2后,当我尝试运行应用程序时出现以下错误:命名空间'System.Web'中不存在类型或命名空间名称'Mvc'
类型或命名空间名称“的mvc”不存在命名空间“System.Web程序”存在(?是否缺少程序集引用)
在Web.config文件中的allegeded罪魁祸首是System.Web.Mvc:
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
到目前为止,我的调查似乎让我相信版本2 o f System.Web.Mvc未安装或未被拾取。
我试着创建一个基于MVC 2的文件>新项目,这是捡起新的(v2)版本的MVC。我也转换了一些其他项目(不是混合),他们没有问题转换为MVC2。
我也卸载了MVC1,尝试从GAC中删除对它的引用。但是,这一切都没有奏效。
任何想法?
请确保您有绑定重定向在你的web.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Web.Mvc" />
</dependentAssembly>
</assemblyBinding>
</runtime>
这迫使MVC 2即使MVC 1是在机器上。
另外:MVC 1确实有System.Web.Mvc
命名空间,所以一定要确保你也有:
<assemblies>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
我碰到的财产以后来到相似,解决办法是改变参考Microsoft.Web.Mvc所以本地复制被设置为True。
我有相同的错误,并单击页面中详细的编译错误链接显示问题与System.Web.Helpers
,.Http,
和.WebPages
。
备份系统后,我运行update-package -reinstall
'并强制卸载/重新安装所有软件包。这迫使web.config文件被正确地重建,dependentAssembly
部分构建正确。
重建解决方案后,它首次运行。
请注意,它确实在web.config中添加了以下错误providers
部分。
<contexts>
<context type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</contexts>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
这只能产生生成警告,但我确实有利于前述contexts
元素将其删除。
这是你的第二个建议,即在组件下明确声明System.Web.Mvc命名空间。谢谢克雷格 - 赞赏! – Guy 2010-04-22 15:37:52