2010-07-18 63 views
0

我需要到ASP.NET MVC项目中的某个文件。在我的同一个项目中有两个文件夹,我们称它们为Main和Reference。Environment.CurrentDirectory渲染错误的路径

从我的Main中,我从我的Reference.csproj文件中调用一个类。从那里,我需要到达我的TargetFile,它也位于Reference文件夹中。

当我使用AppDomain.CurrentDomain.BaseDirectory我得到C:\Project\Main,当我想要C:\Project\Reference

所以我想我可以使用Environment.CurrentDirectory,这将有望指向Reference文件夹而不是Main,但不幸的是它输出C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE。我也试过Directory.GetCurrentDirectory(),但我得到了同样的结果。

我需要的是Environment.CurrentDirectory给我C:\Project\Reference。我认为它应该给我的参考文件夹,而不是主文件夹,因为它是从内部参考调用,但现在它甚至没有接近我的项目文件夹。

有没有一种方法可以做到这一点,而无需在别处定义我的目录?我真的很想做到这一点,而不需要将我的文件路径硬编码到我的项目中。

回答

3

定位属于ASP.NET应用程序(或ASP.NET MVC)的文件的常用方法是使用Server.MapPath("~/folder/somefile.txt"),该程序将自动转换为绝对路径,其中~是网站。无论您在ASP.NET应用程序中引用了哪些程序集,或者它们将从哪里完成,都会在bin文件夹中结束。

+0

我的应用似乎并没有采用Server.MapPath。是否有需要添加到我的课程中的使用说明? – Charmander 2010-07-18 23:04:12

+0

Server.MapPath在App_Start()中始终不可用() – 2012-05-31 09:29:56

+2

是的,它不可用。在这些情况下,您可以使用['HostingEnvironment.MapPath'](http://msdn.microsoft.com/zh-cn/library/system.web.hosting.hostingenvironment.mappath.aspx)。 – 2012-05-31 09:34:21