App.config [Résolu]

Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Dernière intervention
5 mai 2014
- 1 juin 2006 à 09:13 - Dernière réponse :  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
Afficher la suite 

Votre réponse

29 réponses

Meilleure réponse
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 2 juin 2006 à 09:10
3
Merci
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#]

Merci sebmafate 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de sebmafate
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 juin 2006 à 09:37
0
Merci
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
Commenter la réponse de cs_Bidou
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Dernière intervention
5 mai 2014
- 1 juin 2006 à 09:54
0
Merci
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
Commenter la réponse de Moomoon07
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 juin 2006 à 10:06
0
Merci
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
Commenter la réponse de cs_Bidou
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
19 août 2008
- 1 juin 2006 à 10:24
0
Merci
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...)
Commenter la réponse de Nikoui
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
19 août 2008
- 1 juin 2006 à 10:31
0
Merci
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 ?
Commenter la réponse de Nikoui
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 juin 2006 à 10:41
0
Merci
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
Commenter la réponse de cs_Bidou
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
19 août 2008
- 1 juin 2006 à 10:46
0
Merci
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)
Commenter la réponse de Nikoui
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 1 juin 2006 à 10:49
0
Merci
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#]
Commenter la réponse de sebmafate
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 juin 2006 à 10:50
0
Merci
On ne se fâche pas, on débat

VC# forever
=13319
Commenter la réponse de cs_Bidou
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
19 août 2008
- 1 juin 2006 à 10:55
0
Merci
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...
Commenter la réponse de Nikoui
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 juin 2006 à 11:03
0
Merci
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
Commenter la réponse de cs_Bidou
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 1 juin 2006 à 11:08
0
Merci
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#]
Commenter la réponse de sebmafate
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 1 juin 2006 à 12:22
0
Merci
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.
Commenter la réponse de Lutinore
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Dernière intervention
5 mai 2014
- 1 juin 2006 à 15:28
0
Merci
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
Commenter la réponse de Moomoon07
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Dernière intervention
5 mai 2014
- 1 juin 2006 à 15:30
0
Merci
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
Commenter la réponse de Moomoon07
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Dernière intervention
5 mai 2014
- 1 juin 2006 à 17:04
0
Merci
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
Commenter la réponse de Moomoon07
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Dernière intervention
5 mai 2014
- 1 juin 2006 à 17:15
0
Merci
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
Commenter la réponse de Moomoon07
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 juin 2006 à 18:48
0
Merci
Il doit s'appeler app.config, en compilant le programme, il est transformé en exeName.exe.config

VC# forever
=13319
Commenter la réponse de cs_Bidou
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 1 juin 2006 à 19:31
0
Merci
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 );
Commenter la réponse de Lutinore

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.