It feels like this should have a simple solution.
Im developing a tool which is going to have a couple of components - its going to start as a command line tool that we're then going to wrap in a wpf app. The tool is for producing database migration scripts. These are going to be source controlled and sit in a particular place on each user's machine.
I would like to store this location as a setting that doesnt need providing to the command line program and that can be set in the UI version. There may also be other information it would be useful to share between the programs like this (in a set once/rarely way).
I dont want to have a hard-coded path to a config file in the code as that isn't going to be portable between different users of the program.
I know I could just pass the directory name to the command-line app and could also do it by having an app config that people manually set once on their machine. I dont like the former because it's repetitive and typing paths on the command line is a pain and I dont like the latter because if you need to change it then you have to figure out what the program is doing and then go digging around in random folders to modify the file by hand (which again is quite horrible!).
It seems like this should be solved problem and it probably is - I feel like I'm probably missing a trick somewhere.
I'm not bothered about using native Settings objects - in many ways I would prefer it to just be an xml file somewhere as that keeps things nice and simple for upgrading or adding new things to.