Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Developpement Windows Mobile 6.x : Comment interagir avec un fichier de configuration app.config ?

Problématique :

Le .NET Compact Framework ne prend pas en charge les fichiers de configuration XML (app.config) comme dans le Framework .NET classique.

En effet, pour une application mobile, il est impossible d’ajouter un item “fichier de configuration” à une solution Visual Studio, et encore moins d’utiliser l’espace de noms “System.Configuration”.

Par exemple, l’instruction ci-dessous, que vous avez peut-être l’habitude d’écrire pour les autres types de développements, n’existe pas en Compact Framework !!

string value = ConfigurationManager.AppSettings["key"];

Pourtant, l’utilisation de fichiers app.config pour la mobilité pourrait présenter également un grand intérêt. Il pourrait s’avérer utile d’y stocker de nombreux paramètres tels que :

  • Chaines de connexion
  • Chemin de répertoires spécifiques au programme
  • Valeurs à utiliser pour les synchronisations de données (Nom du serveur, réplication SQL, FTP, etc…)
  • Paramètres GPRS
  • Valeurs par défaut utilisées par l’application
  • Etc…

Pas de panique… Cet article démontre comment utiliser des fichiers de config XML sur PDA, comme avec les autres types d’applications…

 

Ajouter un fichier de configuration au projet mobile :

Dans votre projet “Smart Device” de Visual Studio, commencez par ajouter un item de type “XML file”. Nommez ce fichier “app.config” :

appconfig

Ensuite, commencez à écrire les clefs et les valeurs de paramètres à l’intérieur de ce fichier en prenant soin de bien respecter la structure XML ci-dessous :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>

    <add key="key1"    value="value1"/>
    <add key="key2"    value="value2"/>
    <add key="key3"    value="value3"/>
    <!-- ETC... -->

  </appSettings>
</configuration>

Enfin, avant de déployer la solution, assurez-vous que la valeur de la propriété “Copy to Output Directory” est bien “Copy if newer” ou “Copy Always” pour le fichier XML :

copyifnever

En déployant l’application sur un terminal mobile, vous remarquerez que le fichier XML réagit comme un fichier de configuration ordinaire, c’est à dire qu’il se copie dans le répertoire d’installation de l’application et se renomme automatiquement pour porter le nom de l’exécutable suffixé par “.config” :

dploy

Il ne reste plus qu’à trouver un moyen d’interagir avec ce fichier pour pouvoir lire et récupérer les valeurs de chacune des clefs…

 

Interagir avec un fichier de configuration XML - classe “ConfigurationManager” :

Le .NET Compact Framework ne prend pas en charge l’espace de noms “System.Configuration”. Aussi, il est donc nécessaire d’écrire “à la main” le code qui permettra de récupérer la valeur d’une clef à partir du format XML.

La classe “ConfigurationManager”, exposée ci-dessous répond parfaitement à nos besoins en offrant la possibilité de récupérer simplement une valeur de configuration !

La méthode “GetKey” effectue un parsing du flux XML et cherche la clef précise spécifiée en argument. Lorsque le parsing XML a bien trouvé la clef, la méthode retourne la valeur associée sous le bon type, celui qui a été spécifié lors de l’appel à la méthode.

Merci à Dorian Lamandé d’avoir travaillé sur le sujet avec moi et d’avoir participé à l’amélioration de cette classe :

using System;
using System.IO;
using System.Xml;

namespace TestAppConfig
{
    public class ConfigurationManager
   
{
        private static XmlTextReader GetReaderConfigFile()
        {
            // Récupération du chemin de l'éxécutable:
           
string appPath = System.IO.Path.GetFullPath(System.Reflection.
                Assembly.GetExecutingAssembly().GetName().CodeBase) + ".config";
            // Ouverture du fichier de config en lecture:
           
FileStream file = new FileStream(appPath, FileMode.Open,
                FileAccess.Read, FileShare.Read);

            return new XmlTextReader(file);
        }

        public static T GetKey<T>(string key)
        {
            XmlTextReader xmlRead = null;
            try
           
{
                // Récupère le flux XML du fichier de config:
               
xmlRead = GetReaderConfigFile();
                // Recherche la clef dans le fichier de config:
               
while (xmlRead.Read())
                {
                    XmlNodeType nodeType = xmlRead.NodeType;

                    if (nodeType == XmlNodeType.Element)
                    {
                        if (xmlRead.Name.Equals("add") &&
                            xmlRead.GetAttribute("key").Equals(key))
                        {
                            // Retourne la valeur de la clef sous le bon type:
                           
return (T)Convert.ChangeType(xmlRead.GetAttribute("value"),
                                typeof(T), null);
                        }
                    }
                }
            }
            catch (XmlException ex)
            {
                throw ex;
            }
            finally
           
{
                if (xmlRead != null)
                    xmlRead.Close();
            }

            return default(T);
        }
    }
}

Pour pouvoir récupérer des valeurs de configuration dans le code d’une application mobile, il est donc nécessaire de rajouter cette classe à la solution Visual Studio, puis d’appeler la méthode “GetKey” en précisant le nom de la clef et le type de la valeur à retourner.

Exemple :

// Récupération d'une valeur de type 'string' à partir du fichier de config:
string value1 = ConfigurationManager.GetKey<string>("key1");

// Récupération d'une valeur de type 'int' à partir du fichier de config:
int value2 = ConfigurationManager.GetKey<int>("key2");

J’espère que cette classe vous sera très utile pour vos futurs projets Windows Mobile 6.x ;-)

Pi-R.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié lundi 27 septembre 2010 17:27 par Pi-R

Commentaires

mardi 28 septembre 2010 08:10 by Danuz

# re: Developpement Windows Mobile 6.x : Comment interagir avec un fichier de configuration app.config ?

C'est vrai qu'elle est simple, pratique et efficace :-). Merci !

Pour ma part, j'utilise les "Mobile Application Blocks" de Microsoft (celui dédié à la Configuration). Je l'ai légèrement surchagé pour que ça fonctionne exactement comme ConfigurationManager ! Je posterai très prochainement un billet dessus!

A bientôt!

mardi 28 septembre 2010 09:34 by Pi-R

# re: Developpement Windows Mobile 6.x : Comment interagir avec un fichier de configuration app.config ?

Bonjour Danuz,

Merci pour ton commentaire.

J'attends avec impatience ton billet sur les "Mobile Application Blocks". Ca m'intéresse beaucoup !

Merci et à bientôt,

Pi-R.

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01