【问题标题】:Where do I reference System.Web.Mvc.dll from?我从哪里引用 System.Web.Mvc.dll?
【发布时间】:2016-07-06 12:36:29
【问题描述】:

在我的一个类库中,我希望只调用一次System.Web.Mvc.Server.MapPath(string path)

如果我将 NuGet 包 Microsoft.AspNet.Mvc 安装到该类库中,我还必须先安装 Microsoft.AspNet.WebPages 包,它可能有更多的依赖关系。

我只想要单个 DLL System.Web.Mvc.dll,因为 Server 类在其中。

我尝试从路径中引用 DLL:

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Stack 5\Packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45

但该 DLL 在 System.Web.Mvc 命名空间中没有 Server 类。

而且我在我的机器上的其他任何地方都看不到这个 DLL。

我可以从哪里引用这个 DLL?在过去,这曾经很容易。如果您只想在 2010 年之前引用 MVC,这很容易。

【问题讨论】:

标签: .net asp.net-mvc


【解决方案1】:

在您的项目中无需 System.Web.Mvc-assembly 即可使用 Server.Mappath。您只需要在项目中引用 System.Web 即可

var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");

【讨论】:

    【解决方案2】:

    如果我将 NuGet 包 Microsoft.AspNet.Mvc 安装到该类库中,我必须先安装 Microsoft.AspNet.WebPages 包,它可能还有更多的依赖关系。

    是的,自 2010 年以来一直没有改变。但 NuGet 通过安装两个文件以引用 将对这些文件的引用添加到项目中 使其变得更加容易em> 只需一个简单的步骤即可添加任何依赖的 NuGet 包。

    我可以从哪里引用这个 DLL?

    NuGet 安装的文件物理上位于您的根目录(与解决方案文件所在的位置相同)下名为 \packages 的目录中。

    但 NuGet 会在您安装 NuGet 包时自动为您添加对文件的引用,因此除非出现问题,否则无需乱动它们。

    例如,要安装Microsoft.AspNet.Mvc,您只需在包管理器控制台中运行以下命令。

    PM> Install-Package Microsoft.AspNet.Mvc -Version 5.2.3 
    

    它将安装 MVC 5.2.3 版及其所有依赖项,并从您的 .csproj 文件中引用这些 DLL。

    延伸阅读:Using NuGet Part 1: NuGet Basics

    【讨论】:

    • 不,NuGet 在 2010 年不存在。其次,在我的问题中,我根本没有询问有关 NuGet 的任何基础知识,我很熟悉。
    • 我没有说 NuGet 存在于 2010 年,但它的引入确实使引用 DLL 及其依赖项的概念变得更容易。我不确定我是否理解您的问题,因为如果您熟悉 NuGet,这似乎是常识。 NuGet 将依赖项安装到您的项目中,它还会自动添加对它们的项目引用,因此询问它们在哪里似乎表明您正在尝试手动执行 NuGet 已经自动执行的操作。大多数依赖项不再从系统级别的公共位置引用。
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 2020-07-14
    相关资源
    最近更新 更多