2012-07-21 171 views
0

它更「架構」,然後「語言」的問題。在C#庫中的目錄存儲路徑

我的.Net解決方案中有一個類庫,它使用應用程序部署的目錄中的圖像生成一些內容。用戶必須能夠輕鬆添加新圖像,所以我不能將它們放到資源中。

此目錄附加到此類庫。有什麼方法可以找到路徑嗎?用於調試的AppDomain.CurrentDomain.BaseDirectory返回/ bin/debug /,這當然不正確。

即 - 我的應用程序安裝到C:\ Program Files \ MyApp。所以,路徑必須是「C:\ Program Files \ MyApp \ ImagesLib」。

但是:

我的應用程序從顛覆下載並保存到d:\我的項目\ MyApp的。因此,路徑必須是「d:\ My Projects \ MyApp \ ImagesLib」。

如何使此路徑具有通用性?該目錄是從Visual Studio創建的(右鍵單擊/添加/新建文件夾)

+0

你的問題是什麼?我不明白你需要什麼 – 2012-07-21 21:14:46

+0

所以你想要運行的路徑? – 2012-07-21 21:18:17

回答

2

我認爲您的架構需要重新思考。

在新的UAC世界中,您應該按照每個用戶或每臺計算機的基礎寫入特定位置。例如,如果安裝到Program Files,在UAC下嘗試寫入安裝文件夾可能會失敗(取決於權限)。

因此,您將需要使用Environment.GetSpecialFolder()加上SpecialFolder enum。

你可以閱讀更多有關這些位置:

http://msdn.microsoft.com/en-us/library/14tx8hby.aspx http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

例如,假設你只是想存儲在每臺計算機基礎:

var base_data_folder = Environment.GetSpecialFolder(SpecialFolder.CommonApplicationData); 
var data_folder = Path.Combine(base_data_folder,"MyApplication"); 
var images_folder = Path.Combine(data_folder,"Images"); 

在我的Windows 7計算機這等同於:

C:\ProgramData\MyApplication\Images 
+0

我認爲,你的版本將起作用。 – 2012-07-21 21:17:41

+0

這就是它的工作原理 - 用戶從現成的圖像中選擇圖像。然後他選擇輸出目錄並點擊「生成」,它就起作用了。它看起來很容易,但是我加載_the ready ones_(這將是隻讀的)有問題。 – 2012-07-21 21:19:20