2011-07-11 70 views
6

我在Visual Studio(2010年)這個C#項目,我想引用文件在我家目錄中的項目的App.config文件的<appSettings>部分。也就是說,我用這個語法:是否可以在app.config文件中的appSettings內引用主目錄?

<appSettings> 
    <add key="Database" value="sqlite:///C:\Users\arvek\test.db3" /> 
</appSettings> 

是否有可能是指我的主目錄:通過一個變量(C \用戶\ arvek),而不是直接硬編碼的? F.ex .: value =「sqlite:/// $ HOME \ test.db3」。

回答

9

ConfigurationManager將不自動擴展在應用設置任何東西,因爲他們只是自由格式的字符串,但您可以手動。使用EnvironmentExpandEnvironmentVariables方法,該方法將根據當前環境擴展%VARIABLENAME%形式的變量。所以:

<appSettings> 
    <add key="Database" value="sqlite:///%APPDATA%\database\test.db3" /> 
</appSettings> 


string path = Environment.ExpandEnvironmentVariables(ConfigurationManager.AppSettings["Database"]); 

根路徑到你的「家」目錄是在%USERPROFILE%變量,雖然%APPDATA%是傳統的地方放的那種,你在談論的事情。對於系統範圍的數據,還有%ALLUSERSPROFILE%(儘管在Windows 7中實際上指向特定系統範圍的數據文件夾,而不是「公共」配置文件。)

+0

我不敢相信我沒有想到自己處理變量擴展:)雖然%APPDATA%的東西很好的調用。 – aknuds1

0

我發現只需獲取應用程序的目錄這個簡單的代碼行

string appBasePath = AppDomain.CurrentDomain.BaseDirectory; 

這就是我總是指它。

相關問題