2011-03-14 89 views
1

我是新來修補app.config和xml,並且我目前正在做一些重構,我沒有寫一些代碼。
目前我們有一個片段,看起來像這樣:App.config設置,環境變量作爲部分路徑

<setting name="FirstSetting" serializeAs="String"> 
    <value>Data Source=C:\Documents and Settings\All Users\ApplicationData\Company ...;Persist Security Info=False</value> 

我希望做的是把它改爲指向類似${PROGRAMDATA}\Company\...

我怎樣才能做到這一點,牢記PROGRAMDATA會不會總是指向C:\ProgramData

回答

2

我真的不想在代碼中根據其他響應來更改它,因爲這會消除將其作爲配置設置的目的。

事實證明,%ProgramData%\Company...是在此上下文中使用環境變量的正確方法。

+0

只是澄清這是在C:\ ProgramData不在C:\ Users(Win7) – Cel 2011-10-30 12:25:31

+0

下的某處。這是正確的,它導致C:\ ProgramData \ Company。我們在這裏遇到的問題是,有時該目錄位於不同的驅動器上,因此使用環境變量更清晰並始終正確映射。 – 2011-10-31 05:43:06

1

是的,就像在你的設置中那樣寫。然後,剛剛替補$ {PROGRAMDATA}在運行時:

 var setting = Properties.Settings.Default.FirstSetting; 
     setting = setting.Replace("${PROGRAMDATA)", 
      Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 
+1

如果您編寫代碼來執行此操作,請不要爲環境變量引入其他語法,然後嘗試自行展開它們。使用(Windows)標準%NAME%格式,然後只需調用[System.Environment.ExpandEnvironmentVariables](http://msdn.microsoft.com/en-us/library/system.environment.expandenvironmentvariables.aspx)爲你做一切的字符串。 – voyce 2012-09-27 10:23:31

0

考慮到PROGRAMDATA是一個環境變量,您可以訪問使用C#

String EnviromentPath = System.Environment.GetEnvironmentVariable("PROGRAMDATA", EnvironmentVariableTarget.Machine); 
0

你可以使用

var programDataValue = Environment.GetEnvironmentVariable("PROGRAMDATA"); 

如果它來自環境變量。

2

使用

Environment.ExpandEnvironmentVariables(stringFromConfig); 

它取代所有現有的環境變量,如%ProgramData%與精確值的字符串中。