2013-02-12 43 views
30

根据Professional ASP.NET 3.5 MVC的第13章,Scott Hanselmen和Phil Haack将ASP.net 4 webform项目转换为Asp.net MVC4,以及Rob Conery,由Wiley Publishing,Inc出版(ISBN:978-0-470-38461-9)。我也跟着这blog。现在我可以添加控制器,视图等。所有的参考都设置正确。没有生成错误。但是在启动转换后的项目时,我收到了编译错误。我在同一台机器上安装了mvc3。我甚至改变了参考。它仍然抱怨。你能帮忙吗?谢谢。CS0234:Mvc不存在于System.Web命名空间中

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

没有阅读文章,编号想知道,你是否添加引用mvc DLL的? – 2013-02-12 01:58:42

回答

8

会发生这个问题,所以你必须检查你是否已经安装了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。

+1

谢谢!同样的故事,当它是MVC2:https://www.microsoft.com/en-gb/download/details.aspx?id=22079 – 2016-06-17 12:07:43

6

检查运行时标记在web.config中,并确认你有这样的事情宣称:当您部署Web应用程序服务器

<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> 
1

您需要在项目中包含对组件System.Web.Mvc的引用。

你可能没有System.Web.Mvc在C:\ Program Files文件(x86)的\参考大会\微软\ Framework.NETFramework \ V4.0

所以你需要添加它,然后包括它作为您的projrect

0

我有这个问题,但所有在IIS中的应用程序已被破坏,当他们以前一直工作。没有标记的解决方案对我有帮助。这个问题最终成为一个额外的web.config副本已被引入到我的根目录。我删除了该文件,并解决了问题。

75

我有同样的问题,我曾与解决它:

1.右键单击解决方案,然后单击解决方案资源管理'Clean Solution'

2.Click 'References'文件夹并选择问题引用(在你的情况它似乎System.Web.Mvc),然后右键单击并单击'Properties'

3.In属性窗口,请确保'Copy Local'属性设置为'True'

这为我工作。希望它能为别人

有用注意:由于它已经在@Vlad评论中提到:

如果它已经被设置为True:

  1. 将其设置假
  2. 套装它再次真实
  3. 重建
+8

在我的情况下,它被设置为复制本地= true,但由于某种原因DLL不是那里。我只是将它设置为false,然后返回true>重建。有帮助。 – 2014-10-17 13:56:02

+3

刚才有这个问题,这完美的工作! – HTX9 2014-10-18 01:08:01

+3

但是...为什么你必须这样做?我刚刚创建了一个空的mvc项目(vs 2013),并且必须这样做才能使其工作。这意味着默认情况下,您在Visual Studio中启动的项目不起作用。这怎么会溜走? – zod 2014-11-05 19:12:05

3

我试过所有t这些答案甚至关闭了Visual Studio并删除了所有的bin目录。

再次启动后,MVC参考文件上似乎有一个黄色感叹号,所以我将其删除并重新添加。

现在它工作,没有本地复制。

+1

同样的情况在这里!谢谢! – Santiago 2016-10-15 21:53:11

3

以前的答案都不适合我。

我注意到我的项目使用.NET Framework的System.Web.Mvc引用引用了另一个项目。

我刚刚删除该程序集并添加了“Microsoft.AspNet.Mvc”NuGet软件包,并解决了我的问题。

1

添加Microsoft.AspNet.Mvc nuget包。

相关问题