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

时间:2010-09-06 00:10:45

标签: .net visual-studio assembly-references

使用C#,Visual Studio 2010。

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

但是,当我转到Add Reference,“.NET”选项卡时,列表中缺少此程序集。为什么呢?

14 个答案:

答案 0 :(得分:104)

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

答案 1 :(得分:87)

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

只需更新以下MVC包即可。

enter image description here

答案 2 :(得分:60)

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

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

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

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

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

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

答案 3 :(得分:26)

您也可以从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和文件系统程序集引用中遇到的经验痛苦少得多。过去。

答案 4 :(得分:11)

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

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

答案 5 :(得分:5)

  

“好的,将XML添加到Web.config中   工作,但它没有回答   问题“

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

答案 6 :(得分:5)

检查以下步骤:

  1. 检查MVC是否安装正确。
  2. 检查项目的属性,看看项目Target Framework是什么。如果目标框架未设置为.Net Framework 4,请将其设置为。
  3. 注意:如果目标框架设置为.Net Framework 4 Client Profile,则不会在引用列表中列出MVC引用。您可以在.Net Framework 4和.Net Framework 4 Client Profile here之间找到不同的内容。

      

    .NET Framework 4 Client Profile是.NET Framework 4的一个子集,它针对客户端应用程序进行了优化。它为大多数客户端应用程序提供功能,包括Windows Presentation Foundation(WPF),Windows窗体,Windows Communication Foundation(WCF)和ClickOnce功能。这样可以为面向.NET Framework 4 Client Profile的应用程序实现更快的部署和更小的安装包。

答案 7 :(得分:3)

现在,所需的装配已出现在列表中。

我只能推测是什么导致它出现,但我怀疑是我去文件项目 ASP.NET Web应用程序,这是我以前从未做过的。这可能导致某种类型的后期初始化发生,并且列表中将填充额外的Web开发程序集。

答案 8 :(得分:3)

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

答案 9 :(得分:2)

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

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

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

答案 10 :(得分:0)

我相信你会发现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>

回复您的评论;

我能给出的最佳答案来自here

  

add元素添加一个程序集   在编译过程中使用的参考   动态资源。 ASP.NET   自动将此程序集链接到   编译每个代码时的资源   模块。

答案 11 :(得分:0)

它可以分开安装, 并且它不包括在框架中, 选择标签列表&#34;扩展名&#34;它存在还有更多的其他库, 一切都好,不需要使用旧的libs等, 存在旧20 30和4001

答案 12 :(得分:0)

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

我们通常通过在2017实例旁边安装Visual Studio 2015的副本来解决此问题,并在上​​述路径中安装必要的库。然后我们更新受影响项目中的所有参考资料,我们很高兴。

答案 13 :(得分:0)

我在VS 2012中没有获得System.Web.Mvc,但在VS 2013中得到了。 使用AddReference对话框, enter image description here

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

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