2016-07-06 56 views
1

在我的一个班级图书馆中,我只希望打电话给System.Web.Mvc.Server.MapPath(string path)我从哪里引用System.Web.Mvc.dll?

如果我将NuGet软件包Microsoft.AspNet.Mvc安装到该类库中,我还必须首先安装Microsoft.AspNet.WebPages软件包,这可能会有进一步的依赖关系。

我只想要单个DLL System.Web.Mvc.dll,因为Server类就在那里。

我试图从路径引用DLL:

C:\ Program Files文件(x86)的\微软ASP.NET \ ASP.NET Web堆栈5个\包\ Microsoft.AspNet.Mvc.5.2.3 \ lib \ net45

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

而我没有在我的机器上的其他任何地方看到这个DLL。

哪里可以引用这个DLL?在过去,它过去很容易。如果你想参考MVC到2010年,它会很容易。

+2

你不需要System.Web.Mvc对于这一点,在这里看到http://stackoverflow.com/questions/1199486/server-mappath-in-c-sharp-classlibrary – Esko

+0

[HttpServerUtility.MapPath](https://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath(v = vs.110).aspx)是'System.Web'的一部分(两者都命名空间和集合)。它不是特定于MVC。另外一个更强大的解决方案可能是使用[HostingEnvironment.MapPath](https://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.mappath.aspx),因为这不是特定于Web服务器的。另请参阅前面的问题关于2上的差异在这里:http://stackoverflow.com/a/3796042/1260204 – Igor

+0

@Esko谢谢。请把它写成答案? –

回答

1

没有必要让System.Web.Mvc-assembly在你的项目中使用Server.Mappath。所有你需要的是参考的System.Web在你的项目,你可以做

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

如果我安装NuGet包Microsoft.AspNet.Mvc到该类库,我得先安装微软AspNet.WebPages包也可能有进一步的依赖关系。

是的,2010年以来还没有改变,但的NuGet使人们更容易通过安装这两个文件引用将在您的项目添加任何相关的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

+0

不,NuGet在2010年不存在。其次,我根本没有问任何有关NuGet的基础知识,在我的问题中,我很熟悉。 –

+0

我没有说2010年的NuGet存在,但它的引入确实使得引用DLL及其依赖关系的概念更容易。我不确定我是否理解你的问题,因为如果你熟悉NuGet,这似乎是常识。 NuGet *将安装相关性到您的项目中*并且它还自动添加项目引用给它们,所以要问他们在哪里似乎表明您正在尝试手动执行NuGet已经自动执行的操作。大多数依赖关系不再从系统级别的公共位置引用。 – NightOwl888