38

我根据由 Wiley Publishing, Inc. 出版的 Scott Hanselmen、Phil Haack 和 Rob Conery 的 Professional ASP.NET 3.5 MVC 第 13 章将 ASP.net 4 webform 项目转换为 Asp.net MVC4(ISBN:978- 0-470-38461-9)。我也关注了这个博客。现在我可以添加控制器、视图等。所有的引用都已正确设置。没有构建错误。但是在启动转换后的项目时,我得到了编译错误。我在同一台机器上安装了 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 
4

8 回答 8

89

我有同样的问题,我已经解决了:

1.右键单击解决方案并单击'Clean Solution'

2.单击'References'解决方案资源管理器中的文件夹并选择问题参考(在您的情况下,它似乎是 System.Web.Mvc),然后右键单击并单击'Properties'

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

这对我有用。希望它适用于其他人

有用的说明:正如@Vlad 在评论中提到的那样:

如果它已经设置为 True:

  1. 设置为假
  2. 再次设置为真
  3. 重建
于 2014-10-15T20:28:17.430 回答
12

当您将 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,则此工作正常。

于 2013-10-10T17:40:37.163 回答
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>
于 2013-02-12T04:18:16.807 回答
7

添加 Microsoft.AspNet.Mvc nuget 包。

于 2016-09-12T15:22:38.087 回答
5

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

再次启动后,MVC 引用似乎有一个黄色感叹号,所以我将其删除并再次添加。

现在它可以工作了,无需复制本地。

于 2015-03-16T19:41:21.547 回答
5

以前的答案都不适合我。

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

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

于 2015-11-05T14:08:57.507 回答
4

您需要在项目中包含对程序集 System.Web.Mvc 的引用。

您的 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0 中可能没有 System.Web.Mvc

所以你需要添加它,然后将它作为对你的项目的引用

于 2013-11-29T17:42:37.200 回答
1

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

于 2014-02-17T15:39:17.317 回答