[VB.NET] My.Settings 使用心得 & 儲存位置

之前用過很多方式去儲存設定檔,從最基本的txt、ini、xml一路使用上來,在coding方便性跟需求上一直有些取捨,後來使用My.Settings主要有幾個優點:



1.user.config放在系統的隱藏檔裡面,可以避免使用者簡單的找到並亂改。
2.支援的型別很豐富,如果你想在設定檔裡面塞一堆Date、Point、Color之類亂七八糟的東西,甚至是我最喜歡的Collections,又要很方便的使用,重點是你不想寫太多程式碼,不想處理一堆轉型、讀寫問題,My.Settings是一個很好的選擇。


3.UI顯示方式也是簡單到不行,直接塞到PropertyGrid就可以了,當然這是專案比較小的時候才能這樣用,如果上百個參數,客服工程師可能會想揍你。PropertyGrid對Class的支援度也很好,這時候也只要自定義一些Class分類顯示即可。如果是一個帶狀的專案,常常需要修改參數跟使用者介面就會知道差別在哪裡了。

4.版本控管,基本上我不知道客服工程師跟客戶會怎樣亂搞,我並不希望他把V1.1板的設定檔丟到V2.5版本的軟體去使用,這會導致很多無法預期的問題。Release的時候我也可以很簡單的透過修改版本號把參數初始化,就不用擔心有人去更新舊機器卻延用舊的設定檔。

PropertyGrid1.SelectedObject = My.Settings


 My.Settings  儲存位置

網路上最多人搜尋的莫過於My.Settings的設定檔到底在哪裡,基本上你的作業系統和電腦設定有關,檔案會產生在:

<c:\Documents and Settings>\<username>\[LocalSettings\]ApplicationData\<companyname>\<appdomainname>_<eid>_<hash>\<verison>

以我的電腦為例(Windows 7)會產生在

C:\Users\Lenovo\AppData\Local\NikoLu\ConfigTest.exe_Url_chnjtwsj5uayvrun0mer3ld3srtgtrbu\1.0.0.0\user.config



Users:繁體語系電腦會顯示"使用者"
Lenovo:當初電腦設定的使用者名稱
AppData:請開啟隱藏檔才看的到
NikoLu:組件資訊裡面的公司名稱
ConfigTest:經測試ConfigTest.exe_Url_chnjtwsj5uayvrun0mer3ld3srtgtrbu,裡面的ConfigTest是跟隨下圖的組件名稱,這點要特別注意,不然你用後面的程式碼會出錯。



手動找到user.config並不困難,一般使用其實也不用在意到底檔案存在哪裡。不過,當出機量多的時候,出現一個很嚴重的問題,如果使用者常常無預警斷電,user.config有機率會損毀,這會導致程式無法開啟。

機台複製或維護時,有一些設定檔是可以共用或必須沿用的,雖然違反我當初希望可以拿來版本控管的初衷,不過,有時候也要考慮客服人員的能力跟方便性。多建立一個欄位去控管版本也不是太麻煩的一件事。

所以需要幫user.config做一個備份還原的機制還是有必要的。不過,其中最麻煩的就是chnjtwsj5uayvrun0mer3ld3srtgtrbu這一串hash code,以前一直找不到路徑。現在終於有解了,想當初我還搞了一個麻煩的外部軟體,血尿阿 Q_Q

自動取得My.Settings的user.config在每一台電腦上路徑的方法


1.把System.configuration加入參考,因為預設VB並不會載入這個命名空間


2.Imports System.Configuration
3.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath 就這樣簡單,可是當初從MSDN翻爛了一直找不到關鍵字,根本不知道有ConfigurationManager 囧rz

全部的程式碼就只有這樣

當你按下GetTime的時候會寫入My.Settings.GetTime,滑鼠只要指向PropertyGrid,會發現裡面的GetTime值也自動更新了,這樣短短幾行就可以實做參數檔的儲存跟顯示,就是那麼簡單!

COMMENTS

名稱

01.日記、碎碎唸 02.我家番茄(貓) 03.生活小物 04.遊戲 05.旅遊、食記 06.影音、閱讀 07.軟硬體雜談 08.Emma 小宅堂 3C 人物 工作 王品集團 古典音樂、人物 台灣觀光工廠系列 打造夢想家 休閒旅遊 吃吃喝喝 守塔遊戲 抗過敏經驗談 汽車環島 咖啡 社會新聞 便利商店食物 政問 美食分享 美劇 英文學習 軍旅生活相關文章 音樂相關 料理DIY 旅遊記趣 時事 部落格 悲慘世界 園藝 運動健身 電子發票歸戶 電視 電影 戰爭機器系列 戲劇 爵士音樂 薩克斯風 讀書心得 驚悚 小米 日記 Android App BBS舊文收錄 Google Ingress KUSO Mobile Game PC GAME VB.NET XBOX 360 XBOX 360 ARCADE XBOX 360 KINECT
false
ltr
item
NikoLu異想世界: [VB.NET] My.Settings 使用心得 & 儲存位置
[VB.NET] My.Settings 使用心得 & 儲存位置
自動取得My.Settings的user.config在每一台電腦上路徑的方法
https://2.bp.blogspot.com/-e3shoZzEsgM/VviYHghQ4dI/AAAAAAAA2bw/gU96knUE0lMkboyHDrQXrMz8H-zvMTXmA/s320/3.png
https://2.bp.blogspot.com/-e3shoZzEsgM/VviYHghQ4dI/AAAAAAAA2bw/gU96knUE0lMkboyHDrQXrMz8H-zvMTXmA/s72-c/3.png
NikoLu異想世界
http://www.nikolu.com/2016/03/vbnet-mysettings.html
http://www.nikolu.com/
http://www.nikolu.com/
http://www.nikolu.com/2016/03/vbnet-mysettings.html
true
6870587442130335766
UTF-8
Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy