2011-09-06 76 views
3

我在我的項目中有一個設置,當從代碼引用(即我懸停在對象上,我可以看到的值),是不一樣的是在什麼是在Properties.Settings文件。這是一個古老的價值。我可以轉到設置編輯器並將值更新爲其他值,但舊值仍然存在。 如果我使用.Properties.Settings.Default.Save()方法,則設置將會更改,但是當我停止調試時,該更改不會反映在編輯器中。 我可以在文本編輯器中打開Settings.settings文件,它將向我展示與VS中設置編輯器中的內容相同的內容。 我也可以搜索計算機以查找其他Settings.settings文件,只有一個顯示出來(其他人出現,但它們顯然是不相關的,有舊日期modifieds,不會有相同的設置名稱。)Properties.Settings是不是我期望它的值

在哪裏這個文件以及爲什麼這個值與我認爲它應該是不同的?

編輯:

我無法得到,所以我創建了設置GUI界面新設置變量再次被同步了我原來的設置變量。它似乎正在通過適當的傳播。所有的文件,大家都建議我看看有我想要我的設置變量的值,但是當我運行一個調試會話,看着同一個變量,這是我無法追查的一些舊值。

現在我回想起來,大約1.5個月前,我遇到了另一個變量的類似問題,但那次我並沒有深入挖掘這個問題。我必須做同樣的事情。製作一個新的類似命名的變量,刪除舊的並移動一個。

編輯2:

更改設置變量名,讓VS傳播通過它自己的程序,變化似乎是一種硬重啓的了。

+0

設置工作完美。你做錯了什麼。不可能說缺少細節。 –

+0

我同意...通常程序是對的,我錯了。但我錯在哪裏。 – Brad

回答

7

您還未找到設置文件。它不是名爲Setting.settings,這是一個項目文件。它被命名爲 「user.config」,並存儲在一個目錄,像一個奇怪的名字:

C:\用戶\ HPassant \應用程序數據\本地\ MyCompany的\
WindowsFormsApplication1._Url_ghbcotszbdzyqv2ovpc1keo1yctxkcw5 \ 1.0.0.0

其中「HPassant」是用戶名,「MyCompany」是[AssemblyCompany]屬性,「WindowsFormsApplication1」是項目名稱,後跟各種值的散列,後跟[AssemblyVersion]。您可以使用Reflector或ILSpy查看算法,查看ClientConfigPaths類構造函數。

+0

所有這些不同的文件實例似乎不知何故不同步。我已將該項目複製到閃存驅動器中,以便我可以在其他地方處理該問題,這是在何時開始的,但是錯誤在原始文件中。我的複製方法是壓縮它。沒有拖放或任何可以取代原始文件的東西... – Brad

+0

您不會以這種方式複製user.config文件。無論您將其複製到哪臺機器,都將在沒有user.config文件的情況下開始運行該程序。讓機器之間的設置不同步幾乎得到保證。相應地編碼。 –

+0

本課學習困難。有沒有辦法輕鬆地將項目移到另一臺計算機上以避免將來出現這種情況? (雖然我在複製的文件上遇到這個錯誤,但原始問題基於原始未複製文件) – Brad

3

默認的Properties.Settings值被app.config中的值覆蓋。

如果部署的應用程序app.config被重命名爲YourApplicationName.exe.config並且是處理應用程序參數配置的推薦方式。

+0

我現在看到這個文件。所以我猜他們已經不同步了。如何獲取我的用戶設置的所有這些版本以進行備份同步。我還沒有發佈該程序,但順便說一句。 – Brad

1

當您保存設置時,設置將保存到YourApplicationName.exe.config,如@Albin Sunnanbo解釋的。

所以,當你調用Settings.Default.Save()你正在改變這個文件,而不是你的項目中的app.config。你的二進制文件不知道app.config,他們只關心已部署的副本。

設置變量有多個作用域。如果將範圍設置爲「應用程序」,則只會有一個此實例的「實例」。如果您將其設置爲用戶,則每個獨特的Windows用戶都將擁有自己的設置副本。

您在app.config/Properties.Settings中提供的值是默認值值。調用Settings.Default.Save()時,它們將在YourApplicationName.exe.config中被覆蓋。

調試時,您會在/ bin/debug文件夾中找到YourApplicationName.exe.config。看那裏,你會看到你的應用程序中的值與這個文件中的值相同,而不是app.config中的值。

+0

\ bin \ Debug \ YourApplicationName.exe.config,app.config和settings.settings都表示同樣的事情(以及我希望他們說的事情),但這不是應用程序運行時輸出的內容。看到我原來的編輯。 – Brad

2

我改變了設置範圍從用戶到應用程序,解決了我的問題。

相關問題