2011-07-06 140 views
5

我有一個每天運行(由Windows任務計劃程序調用)的簡單控制檯應用程序,並且取決於每次應用程序運行時增加的值。爲了保持這個值,我選擇使用Settings.Settings文件。如何更改Settings.settings值的值

所以我有稱爲RunNumber與範圍用戶的整數值,其每一個應用程序完成運行時間遞增:

Properties.Settings.Default.RunNumber++; 
Properties.Settings.Default.Save(); 

的我選擇,這是該值也被放置到應用程序的部分原因。配置文件:

<setting name="RunNumber" serializeAs="String"> 
    <value>0</value> 
</setting> 

這意味着應該RunNumber已被意外增加它可以只在App.config改變:

<setting name="RunNumber" serializeAs="String"> 
    <value>10</value> 
</setting> 

我的期望是,當我的應用程序下次讀取RunNumber的值時,它將採用app.config中設置的值(本例中爲10)。這不會發生,而是下次運行應用程序時,它將使用上次修改的值,在這種情況下,運行編號將爲1,而不是我期望的10。

我的應用程序訪問RunNumber像這樣的值:

Properties.Settings.Default.RunNumber 

我怎樣才能改變RunNumber的價值,而無需修改應用程序?這個想法是,如果它需要意外地更改爲值,我可以修改app.config中的值,而不必更改一些代碼並重新部署應用程序。

回答

6

被放置在app.config的值是默認使用時新用戶使用你的應用程序和他的設置需要創建。運行應用程序後,將創建一個user.config來存儲用戶範圍設置。

爲了讓您手動更改值時,您需要做的是在相應的user.config,你會在用戶配置文件目錄中找到的地方,因爲如果你改變app.config只有新用戶會看到變化。

在Windows 7沒有漫遊配置文件和一個名爲Example.Settings.CustomClass我得到以下文件夾的user.config的Windows窗體應用程序:

C:\Users\[user]\AppData\Local\Microsoft\Example.Settings.CustomCl_Url_3qoqzcgn1lbyw2zx3oz1o3rsw2anyjsn\1.0.0.0 
+0

非常好。感謝您的明確答案。 – Aesir

2

稱爲RunNumber與範圍用戶的整數值

用戶範圍表示實際值不保存在App.config中,而是保存在Users\<user>\AppData\...文件夾下。

如果您的控制檯應用程序在管理員帳戶下運行(或未放置在Program Files中),則可以使用應用程序範圍設置。

0

在訪問您的Settings類之前,只需使用Reload()即可。 每次訪問特定屬性時,都可以修改生成的Settings類,以調用Reload

1

由於用戶作用域設置的值存儲在用戶文件中,而不是存儲在app.config中,所以最好的方法是添加使用特定開關調用應用程序以重置所需值的功能。例如myapp.exe /setcount=123

當然,您將不得不以適當的用戶身份運行該應用程序,以確保您將該值設置爲正確的文件。

+0

我不認爲你可以用Windows任務調度程序來做到這一點。 –

+0

如果我理解正確,它只是由任務計劃程序調用的常規控制檯應用程序。在這種情況下,您可以手動調用應用程序。 OP建議這是偶爾編輯文件的手動過程 - 這種方法也會限制錯誤的可能性。 – ZombieSheep