Blog Stats
  • Posts - 39
  • Articles - 0
  • Comments - 14
  • Trackbacks - 0

 

Using the “Settings.settings” functionalities in VB.NET can be tricky…

 

Sometime you’re searching for something forever and when you find it, you realize it was right under your nose.  Maybe you were distracted by other things around… or maybe that thing right under your nose was so well hidden that it deserves a blog post…   That happened to me a few days ago while using the “Settings.settings” functionalities in my VB.NET application…  I thought it was a cool feature and I decided to use it… 

So there I am adding new settings with “USER” scope and StringCollection as the data type, testing my application and everything works perfectly fine...  That was before I decided to modify the “Value” of one of my settings…  After changing the value of one of my settings, I start my application again and, to my surprise, my new values aren’t showing!  Hmmm… That’s odd…  My setting was a pretty long list of strings so I was rather angry at myself for not saving my work after I was done…  So I open up the Settings.setting in the designer and click the ellipsis symbol to enter my string collection again, but to my great pleasure (and disbelief) my strings are there!!!  Alright, you rock VB.NET!  You’ve just save me a bunch of typing time and I’m thinking it’s just a simple Visual Studio glitch…  I hit “Save” then “Save All” (just in case) and finally I rebuild everything and fire up my app once again.  Huh?  Where are my darn strings????????  Ok there’s a bug there…  I open up the app.config and my new strings are there!!!  Alright, let’s recap…  My new strings are in the app.config, they show correctly in the Settings.settings designer UI but they aren’t showing at runtime…  Hmmmm?  Let’s try something else…  Let’s start the application but outside Visual Studio this time… I fire up the exe and BAM!  My strings where there!  I “alt-tab” and hit “F5” and BOOM, no strings!  So it’s a bug in the Visual Studio environment… or could it be a FEATURE?  I must admit that I’m a little confused over what’s a bug and what’s a feature in Visual Studio… lol!   Finally I found out there’s a “cache” for your Visual Studio located here: 

C:\Users\<your username>\AppData\Local\Microsoft\<your app name and a very weird temp ID>\<your app version>\user.config

When using the “Settings.settings” with a setting of scope “user”, this file is out of sync with your app.config until you manually decide to update it… The button is right there… under your nose… at the top left corner of your screen in the settings designer…  See the big “Synchronize” button there?  Yep…  Now that’s user friendly isn’t it?  Oh, and wait until you see what it does when you click it…  It prompts you and basically says:  “Would you like your settings to start working inside Visual Studio now that you found out that I exist?” and of course the right answer is yes… or rather “OK”…  Unfortunately, you have to do this every time you edit a value… On the other hand, adding and removing settings seem to work flawlessly without having to click this magical button… go figure!  Oh and I almost forgot… this great “feature” is only available for VB.NET…  A project in C# using Settings.settings will work perfectly EVEN when editing values…

Here’s a screenshot that shows this important button:

Button

Using other data types appears to work perfectly well…   Maybe it’s simply related to the StringCollection data type?  If you are a VB.NET programmer, you should pay attention to this when you plan on using the settings functionalities and your scope is “user” and your data type is StringCollection…

Happy coding all!


Feedback

# re: Using the “Settings.settings” functionalities in VB.NET can be tricky…

Gravatar Yes, I too just spent half an hour completely frustrated until I figured out what you have blogged about. I am not a professional programmer, and when I googled about the issue I found stuff about multiple threads which really scared me since I have no idea how (nor a need) to work with multi-threading. So I am rather relieved that it is just a stupid little featured-bug as you pointed out. Thanks for that! 3/1/2012 2:41 PM | Ibby

# re: Using the “Settings.settings” functionalities in VB.NET can be tricky…

Gravatar Vincent, the reason this exists is so eah user an have a seperate settings group for themselves. you shuold only be using User settings for settings that you want the user to be able to change. Otherwise you should be using Application settings. these do not get cached and once thy are set in the settings.settings file or the app.config file then they remain unchanged until you change them.

Hope this helps.
David 8/22/2012 8:49 AM | David

Post A Comment
Title:
Name:
Email:
Comment:
Verification:
 
 

 

 

Copyright © Vincent Grondin