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

使用C#,Visual Studio 2010。

在MSDN上有一个名为System.Web.Mvc的名称空间。 该名称空间中的所有types的文档说明它们在System.Web.Mvc.dll

但是,当我去添加引用,“.NET”选项卡,该组件从列表中缺less。 为什么?

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

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

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

在这里输入图像说明

我有同样的问题,无法findSystem.Web.MVC参考大会。

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

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

如果它不在那里,那一定是在这里:

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

所以通过导航或添加引用菜单中的浏览选项卡添加DLL。

你也可以从Nuget包pipe理器控制台添加,如下所示:

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

我有同样的问题,这是有趣的原因:我的猜测是你期望System.Web.Mvc位于System.Web下的列表中。 但名单不是按字母顺序的。

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

“好的,把XML添加到Web.config中,但它不能回答这个问题”

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

检查这些步骤:

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

注意 :如果目标框架设置为.Net Framework 4客户端configuration文件,则不会在参考列表中列出MVC参考。 您可以在这里find.Net Framework 4和.Net Framework 4 Client Profile之间的不同。

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

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

现在所需的组件已经出现在列表中。

我只能推测是什么导致它出现,但我怀疑这是事实,我去了文件新build项目ASP.NET Web应用程序 ,这是我以前从未做过的。 这可能会导致某种后期初始化的发生,并且会为Web开发添加额外的程序集。

这已经改变了Visual Studio 2012(我知道原来的问题说VS2010,但标题仍然会打上search)。

当您创build一个VS2012 MVC项目时,system.web.mvc被放置在与解决scheme同级的软件包文件夹中。 这将在Web项目中默认引用,你可以find确切的path)。

如果你想在一个二级项目中引用它(比如一个支持.dll的filter或其他属性),那么你可以从这里引用它。

我相信你会发现MVC程序集在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.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元素在编译dynamic资源时添加一个汇编引用。 编译每个代码模块时,ASP.NET会自动将此程序集链接到资源。

它可以安装分离,它不包括在框架,select选项卡列表“扩展”,它存在和更多的其他库,一切都可以不需要使用旧的库等,存在旧20 30和4001