2016-09-28 205 views
0

我正在試圖弄清楚我的設置將要進行的艱難時刻。我保留一個連接字符串,我找不到任何地方。到目前爲止,我瞭解到AppName.vshost.exe.config應該是調試版本,而AppName.exe.config應該是發行版,但事實並非如此,或者如果是這樣,那麼它們不會訪問默認文件夾也不是我選擇的文件夾。我不知道如果我做錯了什麼或這是微軟的「功能」,但如果任何人有線索,請填寫我。我的設置在哪裏?

我正在與VS 2015的Win 7機器上開發。我的構建 - 配置是「 Active(調試)「,我已經設置輸出路徑爲」C:\ Bin「,因爲我有其他正在構建的應用程序所需的庫,並且更容易將所有輸出路徑設置爲同一位置。

,試圖找到我做了一個新的環境問題,測試: enter image description here

我還添加了一個文本框的形式和使用它像這樣:

public Main() 
    { 
     ... 
     textBox1.Text = Settings.Default.Test; 
     ... 
    } 

private void Main_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     ... 
     Settings.Default.Test = textBox1.Text; 
     ... 
    } 

然後我編譯和複製從C:\ Bin到C:\ Test的exe和所需的dll。該目錄中沒有任何配置文件。

表格在文本框中出現「T」。到現在爲止還挺好。然後我將它改爲「EXE-Tes​​t」: enter image description here

我關閉它並重新打開它,我的更改就在那裏。但它到底在哪裏?在我運行它的文件夾中沒有創建配置文件,就像我期望的那樣。 SQLgem.vshost.exe.config和SQLgem.exe.config文件都在我的輸出文件夾(C:\ Bin)中具有原始「T」。 enter image description here

C:\ Code \ SQLgem \ SQLgem \ bin \ Release沒有任何內容,這是我期望的,因爲我沒有構建發行版。 C:\ Code \ SQLgem \ SQLgem \ bin \ Debug只是有shell,新的設置(實際上我所有的設置)都不會出現在那裏。

它變得更加奇特。當我運行調試(Visual Studio),並更改「T」調試它仍然存在。那麼這個去哪裏?

enter image description here

所以現在有一些堅持兩個設置,但我找不到任何地方。做一個C:> dir SQLgem.exe.config/s沒有找到比我已經提到的更多的東西。

他們在哪裏?

不知何故「惠普公司」成爲嵌入式信息公司。因此,當我跟蹤第一篇文章並檢查了兩個位置時,我本能地忽略了不是我公司的文件夾。經過深入調查,我終於找到了他們!

回答

1

這些是用戶範圍設置,而不是應用程序範圍,因此它們不會在bin目錄(通常是C:\Program Files,並且不能由用戶寫入)中被保存回app.exe.config

某處在%LOCALAPPDATA%(其中用戶可寫的),你會發現存儲在名爲user.config文件中的設置。

此文件所處的目錄是受您的程序集元數據,如公司名稱和產品名稱和版本。

+0

這是什麼? %APPDATA%或%LOCALAPPDATA%?而當你說user.config你的意思是用戶或實際用戶喜歡bvoigt.config? – John

+0

@John:位於'%LOCALAPPDATA%'下面我修正了這個問題,同時將我的評論擴展爲完整的答案。並且文件名正好是'user.config',這是以'u','s','e','r'這四個字母開始的,而不是像'%USERNAME%'這樣的當前用戶的佔位符。 ('%LOCALAPPDATA%'是用戶特定的,用戶名將出現在路徑的目錄部分,但不是文件名) –

+0

謝謝,我發現它是因爲你的幫助。我在帖子中解釋了爲什麼我有這樣的困難。 – John

相關問題