2010-07-18 80 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