【问题标题】:CS0234: Mvc does not exist in the System.Web namespaceCS0234:Mvc 在 System.Web 命名空间中不存在
【发布时间】:2017-05-12 23:13:59
【问题描述】:

我根据 Scott Hanselmen、Phil Haack 和 Rob Conery 所著的专业 ASP.NET 3.5 MVC 第 13 章将 ASP.net 4 webform 项目转换为 Asp.net MVC4,由 Wiley Publishing, Inc. (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 

【问题讨论】:

  • 没看文章,我想知道,你是否添加了对mvc dll的引用?

标签: asp.net-mvc asp.net-mvc-4


【解决方案1】:

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

1.右键解决方案,点击'Clean Solution'

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

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

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

实用提示:正如@Vlad 在 cmets 中提到的那样:

如果已经设置为True:

  1. 设置为假
  2. 再次设置为真
  3. 重建

【讨论】:

  • 在我的情况下,它被设置为 Copy Local = true 但由于某种原因 DLL 不存在。我只是将其设置为 false 并返回 true > 重建。有帮助。
  • 刚刚遇到这个问题,效果很好!
  • 但是……你为什么要这样做?我刚刚创建了一个空的 mvc 项目(与 2013 相比),并且必须这样做才能使其工作。这意味着默认情况下,您在 Visual Studio 中启动的项目不起作用。这怎么可能溜走?
  • @zod 我的想法完全正确!
  • 在使用 RedGate Ants Profiler 时,出现 System.Web.Mvc 错误;你的解决方案解决了这个问题。非常奇怪,因为在没有 Ants 的情况下构建应用程序很好。谢谢。
【解决方案2】:

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

【讨论】:

【解决方案3】:

检查您在 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>

【讨论】:

    【解决方案4】:

    添加 Microsoft.AspNet.Mvc nuget 包。

    【讨论】:

      【解决方案5】:

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

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

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

      【讨论】:

      • 同样的情况!谢谢!
      【解决方案6】:

      以前的答案都不适合我。

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

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

      【讨论】:

        【解决方案7】:

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

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

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            猜你喜欢
            • 2018-10-30
            • 2012-10-13
            • 1970-01-01
            • 2020-06-05
            • 1970-01-01
            • 2013-03-14
            • 1970-01-01
            • 1970-01-01
            • 2018-06-25
            相关资源
            最近更新 更多