命名空间'System.Web.Mvc'中不存在类型或命名空间名称。

224

在构建MVC3解决方案时没有问题,但浏览器出现了错误:

编译器错误消息:CS0234:名称空间'System.Web.Mvc'中不存在类型或命名空间名称'Html'(是否缺少程序集引用?)

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安装了解决方案所需的包,并为所有项目设置了MVC3MVC3是否包括库System.Web.Mvc.AjaxSystem.Web.Mvc.Html等?为什么会出现错误?


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

运行时版本: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>

1
你的网络服务器是什么?这是在IIS中吗? - Daniel A. White
1
你的项目目标设置为什么? - Daniel A. White
2
取决于谁看到这个问题 - 对我们中的一些人来说,这就是所需的全部。管理解决方案的Nuget包...>>更新 - Tom Stickel
是的,在2013年的VS中,使用net4.5版本,勾选了MVC框架后也遇到了同样的问题。Danny的建议对我很有用。进入项目引用,找到System.Web.Mvc,将本地副本设置为true。清理并重新构建即可。 - Kagan Agun
显示剩余2条评论
23个回答

1
很多人似乎都遇到了这个问题。我的问题是由于引用其他项目的bin文件夹路径或从系统文件夹引用dll所导致的。该项目已经有6年的历史,之前的开发人员决定这是引用库的方式。
解决方法是检查每个引用的路径,然后删除引用并使用NuGet添加它。对于任何不在NuGet上的包,我创建了一个与packages相邻的文件夹,并以与NuGet相同的布局将dll放入其中。
我还必须浏览配置文件并确保使用了正确的软件包版本。这是一个漫长而痛苦的过程!

0

我曾经遇到过同样的问题,但是所有的解决方案都没有起作用。最终,我移除了 System.Web.MVC 并重新添加,然后一切恢复正常,我的问题得到了解决。


0

常常发生的情况是,其他答案中的所有激进步骤对我来说都是不必要的。相反,我的错误没有被正确标记。我的建议是在采取任何过于激烈的行动之前先阅读消息!

错误信息如下:

enter image description here

引用的文件是一个临时文件 - 没有太多用处。但是当我对冒犯的视图模型vmPayConfirm进行全局搜索时,我发现了这个:

enter image description here

一旦我纠正了这个错误(我使用了错误的命名空间来引用视图模型),一切都完美地运行了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接