App.config

Résolu
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014 - 1 juin 2006 à 09:13
 EmacLi - 5 nov. 2006 à 12:20
Je souhaiterais enregistrer des chaines de caractères dans app.config (ex : chemin de la base de données, taux de TVA ...) et pouvoir les récupérer.
Quelqu'un peut il m'aider ?

MMN

29 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
2 juin 2006 à 09:10
pourquoi n'utilises-tu pas l'assistant fourni par visual studio 2005 ?

Scope, 2 valeurs : Application, User

Si tu mets Application : les valeurs sont propres à l'application, par exemple connexion à la base de donnée...
Si tu mets User : les valeurs sont propres à l'utilisateur, ca peut être le positionnement de la fenêtre, un mot de passe...

pour utiliser l'assistant : clic droit sur le projet, Properties et onglet Settings

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
1 juin 2006 à 09:37
Salut,
Normalement, le fichier de config devrait être en lecture seul. Avec le framework 2 il y a des outils pour aller écrire dedans, mais je te conseille de faire un autre fichier de sauvegarde pour garder une certaine logique (App.config n'est pas fait pour sauver des options d'utilisateur...)

VC# forever
=13319
0
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
1 juin 2006 à 09:54
C'est dans une question précédente que quelqu'un m'a dit d'utiliser app.config, et qu'il était fait pour ca. Au départ je voulais utiliser un fichier.txt et stocker mes chaine dedans grace à l'indice du numéro de ligne.
Moi ce que je veux c'est que mon programme crait un fichier quel qu'il soit à son 1er lancement, et qu'il stocke des chaines de caractères qui sont rentré dans un formulaire.
Au lancement suivant, il récupère ces chaines en lecture.
Est ce que tu peux me donner un exemple de création de fichier config, et d'écriture de 1 ou 2 paramètres, puis un exemple de lecture ?
private void StockerChaine(string Chaine, string chemin du fichierconfig, string ou int NomduParametre)
// crée le fichier config si inexistant
// stocke la chaine dans fichierconfig
private string RecupererChine(string chemin du fichierconfig, string ou int NomduParametre)
// retourne la chaine stockée sous NomduParametre

Merci d'avance

MMN
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
1 juin 2006 à 10:06
Salut,
Je pense que tu as dû mal comprendre la réponse.
Si ton application a besoin de constantes (qui ne changeront donc jamais, ou alors occasionellement manuellement) alors tu as besoin d'un fichier de config.
Dans ce cas, tu livres ton application avec le fichier déjà crée (et au pire des cas, l'utilisateur peut aller modifier les valeurs manuellement dans le fichier).
Si par contre, tu penses mettre des options dans ton programme, et qu'il faut les sauver (par exemple chaque fois que l'utilisateur quitte le programme) alors ce n'est pas un fichier de config du type app.config que tu as besoin, mais d'un autre fichier (pas text comme tu le propose, mais plutôt Xml).
Alors, dans quel cas tu es ?

VC# forever
=13319
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
1 juin 2006 à 10:24
Heu c'est moi qui t'ai conseillé Moomoon07 et je confirme... utilise un fichier de config, c'est fait pour ça.

Voila la procédure :

- Dans ton projet, choisis : "Ajouter un nouvel élément", puis choisi "Fichier de configuration (settings files en VO)", qui va te créer un fichier MesSettings.settings

- Ensuite, double clic sur cet élement pour l'ouvrir, ca t'ouvre un designer spécial : Tu peux ajouter de nouveau parametre, par exemple :
-Name : "MyConnectionStirng",
-Type : string,
-Scope : application
-Value : "blablabla"

ensuite pour y accéder depuis le code, il te suffit d'appeler le parametre comme cela :

MesSettings.MyConnectionString

(si tu n'a pas accès a "MesSettings", ouvre le fichier MesSettings.designer.cs et regarde si c'est bien le nom de la classe qu'il a généré, et vérifie le namespace pour voir si tu dois rajouter un using...)
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
1 juin 2006 à 10:31
Heu je viens de relire les posts au dessus.. et je me pose une question :

- Tu veux stocker des paramètres (modifiables ou non par l'utilisateur, peu importe) dont tu connais déja le nombre et le type?
- Ou tu veux stocker des données, de différents types/nombre à chaque utilisation ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
1 juin 2006 à 10:41
Ma fois, chacun sa vision des choses et sa façon de programmer, mais la tienne semble à priori passablement différente de la mienne !
Moi je trouve qu'il est bon de séparer les deux types de configurations qui sont relativement différentes : un fichier de configuration type xml qui est constamment modifé (en fonction de l'utilisateur, très simple à faire avec la Serialization), et l'app.config (xml aussi d'ailleurs) réservé à des fins plus spécifiques et qui ne doit généralement pas être modifié (ou peu souvent).
Maintenant évidemment tu peux à nouveau prétendre tout le contraire puisque dans le framework 2 y'a des classes pour écrire dedans...

VC# forever
=13319
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
1 juin 2006 à 10:46
Bah disons que je n'ai jamais vu nul part que les fichier de config ne devait pas etre modifié ou peux souvent... et comme y'a tout ce qui fait pour s'en servir et de facon encore plus simple qu'en serialisant (ce qui est deja on ne peux plus simple on est d'accord), pourquoi se priver... mais bon ca depend de ce qu'il veut faire : si c'est stocker le paramétrage / les options de son appli c'est ce que je ferai, si c'est pour stocker des données qui ne sont pas de la config, mais des données quelquonque, alors je ferai effectivement comme tu le conseil : passer pas la sérialisation dans un fichier xml (mais j'ai le souvenir d'avoir lu sur son premier post qu'il voulait stocker des parametres... je ne suis plus tres sur)
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
1 juin 2006 à 10:49
c'est pas grave... on va pas se fâcher pour ca

http://www.csharpfr.com/codes/SERIALISEZ-VOS-FICHIERS-CONFIGURATION_26172.aspx

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
1 juin 2006 à 10:50
On ne se fâche pas, on débat

VC# forever
=13319
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
1 juin 2006 à 10:55
Oui on débat :)

Je viens d'aller voir ton lien sebmafate... Je suis donc le seul a utiliser les "fichiers de configuration" pour stocker ma configuration ? J'ai vraiment du louper un truc la...
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
1 juin 2006 à 11:03
Sûrement pas le seul, mais c'est aussi une habitude qui est restée étant donné qu'avec le framework 1 on ne pouvait pas écrire dedans (la question ne se posait même pas ).
Moi je trouve bien de faire une différence entre les deux fichiers mais bon, chacun son truc quoi...

VC# forever
=13319
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
1 juin 2006 à 11:08
par contre en .net 2.0... j'utilise beaucoup les fichiers de config de la classe Configuration... pratique puisqu'il y a 2 scopes : User / Machine

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
1 juin 2006 à 12:22
On peut utiliser le fichier de configuration pour les données personelles, l'élément AppSettings et la pour ça, les sections de configuration aussi, d'ailleurs VS les utilise ( Properties.Settings.. ).. Après si on préfère on peut aussi faire son propre fichier XML.
0
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
1 juin 2006 à 15:28
Wouah ! je devrais regarder les réponses plus souvent moi ... désolé, je suis un NewBe du forum !
Merci pour toutes ces réponses, je pense que ca va bien m'aider !
Ce que j'ai fait en fait c'est un formulaire avec des textbox où les utilisateurs de mon logiciel (chacun sur un ordi différent et qui ont une base de données commune, donc un chemin d'accès différent) peuvent taper le chemin de la base de données, et le chemin du dossier contenant mes documents types (word et excel). Ce que je veux c'est que ces chemins (sous forme de chaines de caractères donc) soient sauvegardés dans un fichier config que mon prog crée a son 1er lancement s'il n'existe pas, et par la suite les récupères à son lancement pour accéder à la base de données. De plus je voudrais stocker quelques variables telles que des frais de port ou le taux de TVA, de manière a ce que ces valeur soient dynamique, et qu'on ne soit pas obligé d'éditer le code source pour les modifier (on sait jamais, la TVA peut changer un jour ... )

MMN
0
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
1 juin 2006 à 15:30
Au fait je n'ai pas validé ma réponse par ce que j'ai pas encore testé ...
Mais ca me semble pas mal !

MMN
0
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
1 juin 2006 à 17:04
Voila ce que j'ai écris dans mon fichier config




Le problème c'est que je comprends pas à quoi correspond le champ "scope" !





<?
xml


version
"1.0"encoding"utf-8"

?>

<




configuration

>

<
add


Name
= "CheminBDD"
Type=" string"
Scope ="application"






applicationValue
= "Mon_dossier\ME.mdb"


/>
<
add


Name
= "Provider"
Type=" string"
Scope ="application"






applicationValue
= "Microsoft.Jet.4.0"


/>
<
add


Name
= "CheminDOCS"
Type=" string"
Scope ="application"






applicationValue
= "Mon_dossier\Docs"


/>
<
add


Name
= "TVA"
Type=" double"
Scope ="application"






applicationValue
= "19.6"


/>
<
add


Name
= "FDP_LNTB"
Type=" double"
Scope ="application"






applicationValue
= "4.23"


/>
<
add


Name
= "FDP_AMI"
Type=" double"
Scope ="application"






applicationValue
= "4.25"


/>

</
configuration
>








MMN
0
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
1 juin 2006 à 17:15
Et puis pour récupérer les données pour l'instant je fais :





ConnexionString = "Provider=" + MonFichier.Provider + "; Data Source=" + MonFichier.CheminBDD;






Mais y a t'il un "using" à utiliser ? Parce que VisualStudio me dit que MonFichier n'existe pas dans le contexte courant. (Mon fichier de config s'appelle pourtant bien MonFichier.config, et je le retrouve bien dans mon explorateur de solutions.






MMN
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
1 juin 2006 à 18:48
Il doit s'appeler app.config, en compilant le programme, il est transformé en exeName.exe.config

VC# forever
=13319
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
1 juin 2006 à 19:31
Il faut utiliser les éléments et <ConnectionStrings> quoi que ce dernier c'est surtout pour les "factory" tu pourrais très bien utiliser juste .

Un exemple:

// *.exe.config


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


// *.cs


Configuration config = ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None );
MessageBox.Show( config.AppSettings.Settings[ "BackgroundColor" ].Value );


ConnectionStringSettings css = ConfigurationManager.ConnectionStrings[ "Northwind" ];
MessageBox.Show( css.ConnectionString );
0