类型或命名空间名称不在命名空间中“System.Web.Mvc”类型或命名空间名称不在命名空间中“S

2019-06-17 10:01发布

层楼高MVC3解决方案进展顺利,但在浏览器中已经得到了一个错误:

编译器错误信息:CS0234:类型或命名空间名称“HTML”不会在命名空间“System.Web.Mvc”存在(是否缺少程序集引用?)

Source Error:
Line 25:         <add namespace="System.Web.Mvc" />
Line 26:         <!--<add namespace="System.Web.Mvc.Ajax" />-->
Line 27:         <add namespace="System.Web.Mvc.Html" />
Line 28:         <add namespace="System.Web.Routing" />
Line 29:         <add namespace="System.Web.WebPages" />

我曾与解决方案安装包NuGet并设置为所有项目MVC3 。 是否MVC3包括图书馆System.Web.Mvc.AjaxSystem.Web.Mvc.Html和其他人呢? 为什么会出现这个错误吗?


在引用文件夹,我有System.Web.Mvc

Runtime version: v4.0.30319

Version: 3.0.0.0

Web.config文件

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
    <httpRuntime targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <machineKey compatibilityMode="Framework45" />
    <profile defaultProvider="DefaultProfileProvider">
      <providers>
        <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </profile>
    <membership defaultProvider="DefaultMembershipProvider">
      <providers>
        <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <roleManager defaultProvider="DefaultRoleProvider">
      <providers>
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </roleManager>
    <sessionState mode="InProc" customProvider="DefaultSessionProvider">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
      </providers>
    </sessionState>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
  <connectionStrings>
    <add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportStore;Integrated Security=True;Pooling=False;" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

MSDN的System.Web.Mvc命名空间

文件packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="5.0.0-rc" />
  <package id="jQuery" version="1.7.2" />
  <package id="jQuery.UI.Combined" version="1.8.11" />
  <package id="jQuery.Validation" version="1.9" />
  <package id="Microsoft.AspNet.Mvc" version="3.0.20105.1" />
  <package id="Microsoft.AspNet.Providers.Core" version="1.0" />
  <package id="Microsoft.AspNet.Providers.LocalDB" version="1.0" />
  <package id="Microsoft.AspNet.Razor" version="1.0.20105.408" />
  <package id="Microsoft.AspNet.WebPages" version="1.0.20105.408" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
  <package id="Modernizr" version="2.0.6" />
  <package id="Moq" version="4.0.10827" />
  <package id="Ninject" version="3.0.1.10" />
</packages>

Answer 1:

清洁您的解决方案,然后将这些文件的属性,以Copy Local = True

要复制本地属性设置为True或False

在解决方案资源管理器中,单击显示所有文件按钮,显示引用节点。

  • 打开项目的引用节点。
  • 用鼠标右键单击在引用列表的引用,然后单击属性。 与参考相关的属性出现在属性窗口的列表。
  • 在属性窗口,复制本地属性为True或False改变。


Answer 2:

不管出于什么原因,我的解决方案中的两个自发卸载asp.net MVC莫名其妙的web项目。 我来自的NuGet安装了它,现在他们都工作了。 这发生了最近一批的Windows更新,其中包括了我所用的版本(4.5.1)的.NET Framework更新后。

编辑:从.NET Web开发工具和博客:

微软Asp.Net MVC安全更新MS14-059打破了我的体型!



Answer 3:

这其中通常抓住我,当我从IIS中运行,并默认网站应用程序池设置为.NET 2.0版本。 当使用IIS从Visual Studio它会创建一个虚拟目录,但仍然是默认网站的应用程序池下运行。 如果使用的Web服务器构建,右键点击你的Web项目,进入属性,并确保你的.NET的正确版本下运行它。 在IIS检查您的应用程序池的.NET版本。

从我最后的评论下面就关于如何创建项目 - 你正确包括组件,如下(从VS10中的MVC3项目模板生成的默认web.config文件采取的):

<compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
</compilation>


Answer 4:

您需要更新MVC。

  1. 进入工具 - > NuGet包管理器 - >管理的NuGet包解决方案
  2. 点击“更新”
  3. 更新“微软ASP.NET MVC”
  4. 重建解决方案


Answer 5:

我有同样的问题 - 我的情况是,我是从一个lib文件夹中引用新System.Web.Mvc.dll程序,我没有“复制本地”设置为true。 然后应用程序被恢复到的版本在GAC它不具有正确的命名空间(HTML,阿贾克斯等),在它,并给我运行时间错误。



Answer 6:

我的解决办法下管理的NuGet包解决方案... -我有许许多多的更新相当多的包做。

让我回到了半步,说我搞砸了我自己,因为我感动的解决方案和项目从一个文件夹到另一个......这样的事情相比,在项目以为事情出来是已经走出低谷。 一切都搬了过来就好了,但显然,除非你用比我做了一个不同的方法的NuGet变得混乱。

回到解决方案...我只是去管理的NuGet包解决方案... >> 更新 >> 微软和.NET和命中全部更新按钮

一切都恢复了正常和快乐。



Answer 7:

我下载了一个MVC 5项目和违规问题指向

<add namespace="System.Web.Mvc.Ajax" />  

与此错误消息:

CS0234: The type or namespace name 'Ajax' does not exist in the namespace 'System.Web.Mvc' (are you missing an assembly reference?)

- >在我来到这个网页,并试图清洁及以上等一些东西......

什么工作对我来说只是为了

Manage Nuget and Update all the packages.  Then it worked fine.


Answer 8:

在NuGet包管理器运行以下命令来修复它为我:

update-package microsoft.aspnet.mvc -reinstall


Answer 9:

这个答案是较晚给出这个问题的日期,但有人可能会发现它很有用。

上述解决方案都没有为我工作在Visual Studio 2012上的本地项目,.Net框架4.5 MVC 4.背景下,我下面就建立在CodeProject准系统网络API教程( http://www.codeproject.com/文章/ 615805 /创建-A-清洁最小占位面积-ASP-NET-的WebAPI )时,我遇到了这个问题。

做什么工作对我来说是明确地将“System.Web.Mvc”我的应用程序的引用,即使应用程序已经做参考“的System.Web”。



Answer 10:

我有同样的问题,但没有上述的工作对我来说。 他们没有把我在正确的方向,但。

例如,当我设置的“复制本地”,以“真”为System.Web.Mvc参考,它会自动将其设置回为False。

我有这取决于我的解决方案的System.Web.Mvc参考多个项目,但只有一个导致此问题。 在VS 2012这个参考标有黄色警示三角形。

找到这个参考=>删除=>重新添加

问题解决了我。 希望这可以帮助



Answer 11:

查看和检查您的csproj参考路径。

我不得不删除引用System.Web.Mvc(及其他),并重新添加到自定义路径。 C:\Project\OurWebReferences

但是,这样做后,在静止的csproj参考路径没有改变。 WAS

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\OurWebProject\bin\Debug\System.Web.Mvc.dll</HintPath>
</Reference>

改为手动

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
        <HintPath>..\..\..\..\OurWebReferences\System.Web.Mvc.dll</HintPath>
</Reference>

路径是仅是示例。



Answer 12:

对我来说,解决办法是确保所有项目都建立了相同的CPU - 在我的情况的x86



Answer 13:

复制本地=真为解决我的项目之一。 但在另一个项目中,我得到了同样的错误,试图设置复制本地=真正的,但它不解决我的问题。 在项目属性改变从4.5.1目标框架4.5的帮助下与此有关。



Answer 14:

我做了一件非常愚蠢的(也许你确实做了)。

我试图调用System.Web.Mvc.Html.Partial("<Partial Page>")

System.Web.Mvc.Html是一个命名空间,而不是一类,我不看我的错误信息这么好,所以我解释我的错误作为类Html不会在命名空间System.Web.Mvc存在,这就是我怎么样在这里结束了(愚蠢的我知道)。

所有我需要做的是添加using语句@using System.Web.Mvc.Html到我的网页,然后@Html.Partial发挥预期。



Answer 15:

如果上述任何未解决您的问题,只是设置System.Web.Mvc.dll程序的属性,以复制本地真实存在。

这将解决



Answer 16:

我有同样的问题,但在我的情况下,最初由其他因素。 我写这篇文章,以帮助其他人同样的问题。 我有多个项目的解决方案。 他们两个的System.Web.Mvc工作,通常我们的参考指着我们控制了使用的版本外部包。 对于项目引用的一些原因,一个人去GAC并指向GAC DLL(版本4.0.0.1)和计划得到了错误。 要纠正它:

简单的检查,如果到System.Web.Mvc指向同一个DLL在同一目录路径引用。

我希望帮助。



Answer 17:

我从我的网站斌frolder删除System.Web.dll中。



Answer 18:

我有这个问题,地方上下车等设定副本没有工作。 该项目未使用的NuGet使周围修复了出了问题也。

对我来说,修复是安装MVC 3(这是我通过网络平台安装程序所做的那样)。

我怀疑作为.NET框架的不断推进,人们还没有安装上了年纪MVC的东西,这将成为更多人的解决方案。



Answer 19:

这可能是因为您的DLL设置为CopyLocal /真或任何这样做的其他主要修复将解决您的问题,但这里是抓住了我20分钟的时间浪费另一个边缘的情况下。

当你把你的命名空间到你的意见/ Web.config中,确保他们正确套管:

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="THE.NameSpace" />
        <add namespace="THE.Namespace" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>


Answer 20:

好了,所以很多人似乎遇到此问题。 我的问题是由具有路径等项目的bin文件夹中,或者从系统文件夹引用的DLL引用造成的。 该项目是约6岁以前的开发商已经决定,这是他们要引用自己的音乐库的方式。

解决的办法是要经过每一个参考和检查的路径,然后取出参考和使用的NuGet添加。 对于那些并不在任何的NuGet包我创建了一起包另一个文件夹,并把DLL中存在的相同的布局的NuGet会。

我也不得不去通过配置文件,并确保正在使用的包的正确版本。 一个漫长而痛苦的过程!



Answer 21:

我有同样的问题,没有解决方案的工作对我来说,最后我删除了System.Web.MVC加入,并再次然后一切都恢复正常,我的问题解决了。



文章来源: The type or namespace name does not exist in the namespace 'System.Web.Mvc'