Have you ever written a mobile application using .NET compact framework and tried to use config files? I think there are many scenarios where you want to have a configurable mobile application. So I can’t understand why Microsoft hasn’t implemented (even a subset of) the .NET application configuration handling in CF.
Here is a short implementation which gives you very basic configuration abilities in CF.
First I build a simple class for reading the configuration using the XmlDocument class. This class is designed to be static, so you can access the configuration without having to create an instance of the MobileConfiguration class.
1: public static class MobileConfiguration
2: {
3: public static NameValueCollection Settings;
4:
5: static MobileConfiguration()
6: {
7: string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
8: string configFile = Path.Combine(appPath, "App.config");
9:
10: if (!File.Exists(configFile))
11: {
12: throw new FileNotFoundException(string.Format("Application configuration file '{0}' not found.", configFile));
13: }
14:
15: XmlDocument xmlDocument = new XmlDocument();
16: xmlDocument.Load(configFile);
17: XmlNodeList nodeList = xmlDocument.GetElementsByTagName("appSettings");
18: Settings = new NameValueCollection();
19:
20: foreach (XmlNode node in nodeList)
21: {
22: foreach (XmlNode key in node.ChildNodes)
23: {
24: Settings.Add(key.Attributes["key"].Value, key.Attributes["value"].Value);
25: }
26: }
27: }
28: }
Now you just need to add an app.config to the root of your mobile application. You can do this by adding a new xml-document with the name “app.config” (or whatever name you would like). Don’t forget to set the Build Action of this file to “Contend” so that the file will be deployed to the mobile device.
Here is a sample App.config:
1: <?xml version="1.0" encoding="utf-8" ?>
2: <configuration>
3: <appSettings>
4: <add key="ServerName" value="myServer.MyDomain" />
5: <add key="ServerPort" value="0815" />
6: <add key="UserName" value="MyUser" />
7: <add key="Password" value="MyPwd" />
8: </appSettings>
9: </configuration>
The access to these settings in the mobile application is very easy:
1: ...
2: string userName = MobileConfiguration.Settings["UserName"];
3: ...
I know this is no solution for more complex scenarios and it can’t be compared with the power of ConfigSections in the “real” Framework, but with this solution it is possible to use simple configuration for windows mobile based applications.
Posted
May 26 2009, 03:06 PM
by
alehmann