139

使用 C#、Visual Studio 2010。

MSDN 上有一个名为System.Web.Mvc的命名空间。该命名空间中所有类型的文档都说它们在System.Web.Mvc.dll.

但是,当我转到“添加引用”“.NET”选项卡时,列表中缺少该程序集。为什么?

4

14 回答 14

113

最好的方法是使用 NuGet 包管理器。

只需更新下面的 MVC 包,它应该可以工作。

在此处输入图像描述

于 2014-06-01T04:49:25.353 回答
107

在 VS Express 2012 中,我在“程序集”选项卡中找不到 System.Web.Mvc,但经过一番搜索,我发现我需要查看“程序集\扩展”选项卡而不是默认的“程序集\框架” “ 标签。

于 2013-06-07T12:17:53.037 回答
62

我遇到了同样的问题,无法找到 System.Web.MVC 参考程序集。

终于找到了,它位于以下位置。

请注意,如果您的 VS 安装在 C 中:(有时 MVC.dll 不在每个人都在谈论的默认位置,我的意思是位于 C: 驱动器中的“ Reference Assemblies ”文件夹。)

如果它不在那里,它肯定应该在这里:

\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies\System.Web.Mvc.dll

因此,通过导航或添加引用菜单中的浏览选项卡添加 dll。

于 2012-04-15T17:00:27.357 回答
28

您还可以从 Nuget 包管理器控制台添加它,例如:

Install-Package Microsoft.AspNet.Mvc -Version 4.0.20710.0 -ProjectName XXXXX

Microsoft.AspNet.Mvc 依赖于:

  • 'Microsoft.AspNet.WebPages (≥ 2.0.20710.0 && < 2.1)'
  • 'Microsoft.Web.Infrastructure (≥ 1.0.0.0)'
  • 'Microsoft.AspNet.Razor (≥ 2.0.20710.0 && < 2.1)'

...这对我来说似乎没什么大不了的。在我们的例子中,这是一个仅用于为我们的 Mvc 应用程序提供支持的类库。所以,我们认为它在最坏的情况下是一种良性依赖。

我绝对更喜欢指向文件系统或 GAC 中的程序集,因为与我过去使用 GAC 和文件系统程序集引用的经验相比,将来更新包可能会少很多痛苦。

于 2013-05-18T08:27:40.470 回答
11

我遇到了同样的问题,这是一个有趣的原因:我的猜测是您希望System.Web.Mvc位于System.Web列表中。但该列表不是按字母顺序排列的。

首先对列表进行排序,然后查看System.Web.

于 2012-09-11T14:38:17.147 回答
6

我通过搜索“mvc”解决了这个问题。System.Web.Mvc 出现在搜索结果中,尽管它不包含在列表中。

于 2014-07-19T09:09:50.203 回答
5

“好的,将 XML 添加到 Web.config 有效,但它不能回答问题”

它应该在那里。默认情况下,添加引用列表似乎是有序的,但事实并非如此。点击名称标题并再次查看。

于 2010-09-06T10:17:58.567 回答
5

检查这些步骤:

  1. 检查 MVC 是否安装正确。
  2. 检查项目的属性,看看项目的目标框架是什么。如果目标框架未设置为 .Net Framework 4,请进行设置。

注意:如果目标框架设置为 .Net Framework 4 Client Profile,它不会在引用列表中列出 MVC 引用。您可以在此处找到 .Net Framework 4 和 .Net Framework 4 Client Profile 之间的不同之处。

.NET Framework 4 客户端配置文件是针对客户端应用程序优化的 .NET Framework 4 的子集。它为大多数客户端应用程序提供功能,包括 Windows Presentation Foundation (WPF)、Windows 窗体、Windows Communication Foundation (WCF) 和 ClickOnce 功能。这为面向 .NET Framework 4 客户端配置文件的应用程序提供了更快的部署和更小的安装包。

于 2012-03-12T08:53:04.553 回答
3

所需的程序集现在已出现在列表中。

我只能推测是什么导致它出现,但我怀疑是因为我去了FileNewProjectASP.NET Web Application,这是我以前从未做过的。这可能会导致发生某种延迟初始化,并且列表中会填充用于 Web 开发的其他程序集。

于 2010-09-06T13:29:50.617 回答
2

这对于 Visual Studio 2012 已经改变(我知道最初的问题是 VS2010,但标题仍然会在搜索中出现)。

当您创建 VS2012 MVC 项目时,system.web.mvc 被放置在与解决方案对等的 packages 文件夹中。默认情况下,这将在 web 项目中引用,您可以在那里找到确切的路径)。

如果您想在辅助项目中引用它(比如带有过滤器或其他属性的支持 .dll),那么您可以从那里引用它。

于 2012-10-04T19:49:41.937 回答
2

我在 VS 2012 中没有得到 System.Web.Mvc,但我在 VS 2013 中得到了它。使用 AddReference 对话框, 在此处输入图像描述

或者,您可以在项目路径中找到它,

YourProjectName\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll

于 2018-07-24T20:28:39.977 回答
0

我相信您会发现在 web.config 文件中引用了 MVC 程序集,而不是在项目本身中。

像这样的东西:

<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.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </assemblies>
</compilation>

回复您的评论;

我能给出的最佳答案来自这里

add 元素添加要在编译动态资源期间使用的程序集引用。ASP.NET 在编译每个代码模块时会自动将此程序集链接到资源。

于 2010-09-06T00:16:52.697 回答
0

它可以单独安装,它不包含在框架中,选择选项卡列表“扩展”并且它存在还有更多其他库,一切都可以不需要使用旧库等,存在旧20 30和4001

于 2016-11-09T09:54:38.180 回答
0

如果您在 Visual Studio 2017 中遇到此问题,您很可能正在使用在以前版本的 VS 中创建的 MVC 4 项目,其参考提示路径指向C:\Program Files (x86)\Microsoft ASP.NET. Visual Studio 2017 不再安装此目录。

我们通常通过在 2017 实例旁边安装 Visual Studio 2015 的副本来解决此问题,并在上​​述路径中安装必要的库。然后我们更新受影响项目中的所有引用,我们就可以开始了。

于 2018-05-31T16:01:56.030 回答