根据专业ASP.NET 3.5 MVC的第13章,由Scott Hanselmen,Phil Haack和Rob Conery(由Wiley Publishing,Inc。出版)将ASP.net 4 webform项目转换为Asp.net MVC4(ISBN) :978-0-470-38461-9)。我也遵循了这个blog。现在我可以添加控制器,视图等。所有引用都设置正确。没有构建错误。但是在启动转换后的项目时,我遇到了编译错误。我在同一台机器上安装了mvc3。我甚至改变了对它的引用。它仍然抱怨。你能帮忙吗?感谢。
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0234: The type or namespace name 'Mvc' does not exist in the namespace 'System.Web' (are you missing an assembly reference?)
Source Error:
Line 109: <namespaces>
Line 110: <add namespace="System.Web.Helpers"/>
Line 111: <add namespace="System.Web.Mvc"/>
Line 112: <add namespace="System.Web.Mvc.Ajax"/>
Line 113: <add namespace="System.Web.Mvc.Html"/>
Source File: c:\Users\Jon\Documents\Visual Studio 2012\Projects\CMT\Apps\Branches\3.0\Web.config Line: 111
答案 0 :(得分:83)
我遇到了同样的问题,我用以下方法解决了这个问题:
1.右键单击解决方案,然后单击'Clean Solution'
2.单击解决方案资源管理器中的'References'
文件夹并选择问题参考(在您的情况下看起来似乎是System.Web.Mvc)然后右键单击并单击'Properties'
。
3.在属性窗口中,确保'Copy Local'
属性设置为'True'
这对我有用。希望它适用于其他人
有用的注意事项:正如@Vlad在评论中提到的那样:
如果已设置为True:
答案 1 :(得分:10)
将Web应用程序部署到服务器时可能会发生此问题,因此您必须检查是否已安装MVC3。
检查文件夹C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3
是否存在。
如果不存在,则需要从http://www.microsoft.com/en-us/download/details.aspx?id=1491
安装如果您不想安装,可以在bin文件夹中本地添加所有DLL并添加对它们的引用,如果您在服务器上托管,则不能部署ASP.NET网页或MVC3。
答案 2 :(得分:8)
检查web.config中的运行时标记,并验证是否有类似的声明:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
.....
</runtime>
答案 3 :(得分:5)
我尝试了所有这些答案,甚至关闭了Visual Studio并删除了所有bin目录。
再次启动后,MVC参考似乎上面有一个黄色感叹号,所以我将其删除并再次添加。
现在它可以工作,没有本地复制。
答案 4 :(得分:5)
以前的答案都不适合我。
我注意到我的项目使用.NET Framework中的System.Web.Mvc
引用引用了另一个项目。
我刚刚删除了该程序集并添加了“Microsoft.AspNet.Mvc”NuGet包,这解决了我的问题。
答案 5 :(得分:4)
添加Microsoft.AspNet.Mvc nuget包。
答案 6 :(得分:2)
您需要在项目中包含对程序集System.Web.Mvc的引用。
您可能没有C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0
中的System.Web.Mvc所以你需要添加它然后把它作为你的projrect
的参考答案 7 :(得分:1)
我遇到了这个问题,但是IIS中的所有应用程序在以前工作时都被破坏了。所有标记的解决方案都没有帮助我。问题最终是web.config的额外副本已被引入我的根目录。我删除了该文件并解决了问题。