为什么 System.Web.Mvc 没有列在添加引用中?

使用 C # ,Visual Studio 2010。

MSDN 上记录了一个名为 系统,网络,Mvc的命名空间。该命名空间中所有类型的文档说明它们位于 System.Web.Mvc.dll中。

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

206824 次浏览

我相信您会发现在 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 元素添加程序集 编制时使用的参考资料 动态资源 自动将此程序集链接到 编译每个代码时的资源 模组。

”好的,将该 XML 添加到 Web.config 可以,但是不能回答 问题”

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

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

我只能推测是什么导致了它的出现,但是我怀疑是因为我从 档案新的工程项目NET Web 应用程序这是我以前从来没有做过的事情。这可能导致某种后期初始化的发生,并且列表中填充了用于 Web 开发的附加程序集。

检查以下步骤:

  1. 检查 MVC 是否安装正确。
  2. 检查项目的属性并查看什么是项目 TargetFramework。如果未将目标框架设置为。网络框架4,设置它。

注意 : 如果目标框架设置为。NetFramework4客户端配置文件,它不会在引用列表中列出 MVC 引用。你会发现。网络架构4及。Net Framework 4客户端配置文件 给你

那个。NETFramework4客户端配置文件是。NETFramework4,它针对客户端应用程序进行了优化。它为大多数客户端应用程序提供功能,包括 Windows 演示基金会(WPF)、 Windows 窗体、 Windows 通信基金会(WCF)和 ClickOnce 特性。这使得针对。NETFramework4客户端配置文件。

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

最后发现它位于以下位置。

注意你的 VS 是否安装在 C: (有时 MVC.dll 不在大家都在谈论的默认位置,我指的是位于 C: 驱动器中的“ 参考程序集”文件夹。)

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

程序文件(x86) Microsoft ASP.NET ASP.NET MVC 2汇编系统.Web.MVC.dll

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

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

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

VisualStudio2012已经改变了这一点(我知道最初的问题是 VS2010,但是标题仍然会在搜索中出现)。

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

如果您想在辅助项目中引用它(例如支持。使用过滤器或其他属性) ,然后可以从那里引用它。

你也可以从 Nuget Package Manager 控制台添加这个,比如:

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 和文件系统程序集引用的经历要轻松得多。

在 VS Express 2012我找不到 System。韦伯。Mvc 在“ Assembly”选项卡中,但是在搜索了一会儿之后,我发现我需要查看“ 程序集扩展”选项卡而不是默认的“ Assembly Framework”选项卡。

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

只要更新下面的 MVC 包,它应该工作。

enter image description here

我通过搜索“ mvc”解决了这个问题。系统。韦伯。Mvc 出现在搜索结果中,尽管它不在列表中。

可以分开安装, 它不包含在框架中, 选择选项卡列表“扩展”,它存在有更多的其他库, 一切都好,不需要使用旧的图书馆等, 存在老2030和4001

如果您在 Visual Studio 2017中遇到了这个问题,那么您可能正在使用在 VS 的早期版本中创建的带有指向 C:\Program Files (x86)\Microsoft ASP.NET的引用提示路径的 MVC 4项目。VisualStudio2017不再安装此目录。

我们通常通过在2017实例旁边安装 VisualStudio2015副本来解决这个问题,并在上面的路径中安装必要的库。然后我们更新受影响项目中的所有参考资料,就可以开始了。

我没有在 VS2012中得到 System.Web.Mvc,但是我在 VS2013中得到了它。 使用 AddReference 对话框, enter image description here

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

YourProjectName 包 Microsoft.AspNet.Mvc.5.0.0 lib net45 System. Web. Mvc.dll