Donc, longue histoire courte, je développe une application qui utilisera certaines informations de configuration pouvant être modifiées au moment de l'exécution de l'application elle-même. Dans le but que j'ai pensé à utiliser les paramètres code> code> classe.
Le problème, la pensée, est que les informations ne sont pas persistées entre différentes exécutions de l'application: p>
Run 1 ) p> exécuté 2) p> ( tous deux impression exactement la même sortie em>) < / p> Les deux exécutions apparaissent la même première impression "utilisateur par défaut", bien que sur la 2e course, je voudrais obtenir "ABC", indiquant que les informations ne sont pas persistées entre différentes exécutions d'applications. p> i reconnaissez que cela doit être associé à la façon dont Visual Studio gère des fichiers .config, mais même je voudrais savoir comment corriger ce comportement (méchant)? P> P>
5 Réponses :
Par défaut, app.config n'est pas copié directement, c'est plutôt que le contenu est placé dans En règle générale, ce n'est pas une bonne pratique pour que l'application puisse changer sa propre app.config. Si vous développez une application pouvant être utilisée par plusieurs utilisateurs sur le même PC, alors Utilisez les paramètres à la place. De cette façon, chaque utilisateur peut avoir ses propres paramètres. p>
Pour les services et les paramètres à l'échelle du système, envisagez d'utiliser un autre stockage, comme un fichier de configuration distinct, un registre ou une base de données. P>
Modifier sur les paramètres d'économie: strong> p>
Lorsque vous utilisez la classe de paramètres, vous devez appeler Enregistrer () pour l'écrire dans le fichier, sinon les modifications des paramètres seront supprimés lorsque l'application est fermée. Si vous terminez souvent votre demande pendant le développement et que cela n'atteint pas son code final (où vous passeriez normalement un appel à enregistrer ()), vous avez ensuite plusieurs options: P>
paramètres.default.save () code> dans la fenêtre de surveillance et rafraîchissez-le à chaque fois que vous souhaitez enregistrer. Li>
Mon application ne sera pas utilisée par plusieurs utilisateurs. Je veux juste un moyen rapide de charger / stocker des données spécifiques dans mon application. D'après ce que j'ai lu, la classe de paramètres a été créée à cet effet (et je pense que c'est aussi la raison pour laquelle ils vous permettent de définir des paramètres via la classe de paramètres). Donc, ma question initiale est toujours: lorsque vous développez, comment éviter de perdre les données que je sauve les fichiers entre exécution des exécutions?
Ce code avec l'ensemble de propriétés d'utilisateur avec enregistre le réglage sur un emplacement obscur: p> C: \ Utilisateurs \ Nom d'utilisateur \ Appdata \ local \ ConsoleApplication4 \ ConsoleApplication4.exe_url_acauylh2b.url_acauylh2bl2j4ed0ilz0mujq5aomfmu \ 1.0.0.0 p> Donc, même dans votre app.config strong> Vous voyez toujours "utilisateur par défaut" après avoir exécuté l'application multiple TEMPS: P> utilisateur code> Scope:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<ConsoleApplication4.Settings1>
<setting name="User" serializeAs="String">
<value>abc</value>
</setting>
</ConsoleApplication4.Settings1>
</userSettings>
</configuration>
Désolé pour ça, peut-être que c'était juste le sauvegarde (); code> que vous manquiez. Ou que cette application est censée être en lecture seule.
Je ne sais pas comment cela est différent de votre approche, mais j'ai résolu ce problème à l'aide du fichier de paramètres.
Tout d'abord, créez le fichier de paramètres dans le menu Propriétés de votre projet. Faites un clic droit sur le projet dans l'explorateur de la solution et sélectionnez «Propriétés». Allez dans l'onglet Paramètres et créez le fichier de paramètres. Une fois le fichier créé, vous devez voir un datagrid où vous pouvez entrer un nom / type / portée / valeur. Configurez toutes les variables que vous souhaitez utiliser ici (je ne sais pas si vous pouvez créer plus de variables au moment de l'exécution, mais je ne le pense pas). P>
Maintenant, dans Code, vous pouvez utiliser la classe de propriétés qui figurera dans l'espace de noms par défaut de votre projet. p>
Pour lire un réglage: p> et pour enregistrer un paramètre: p>
Ce qui suit est ce que j'ai utilisé pour enregistrer quelque chose dans le fichier app.config. espère que cela aide. p> p>
Peut-être que vous pouvez utiliser le système de fichiers pour créer un lien symbolique entre les 2 fichiers afin qu'il modifie réellement le fichier dans la source. Cependant, je ne peux pas penser à une solution rapide pour le compilateur de ne pas écraser le fichier de configuration (et éliminez ainsi le lien). P>
Au moins cette approche ne nécessite pas de coder une solution de contournement. Il n'influence pas non plus la façon dont vous souhaitez enregistrer les paramètres (comme passer de la valeur par défaut à l'utilisateur). Donc, ce n'est efficace que lorsque vous développez em>. P>
Avez-vous essayé d'appeler
Enregistrer code> sur les paramètres ( de MS ). Ou pour plus d'efforts «élaborés», vous pouvez faire
configurationmanager.opénexeconfiguration code> (ou
OpenMAppeSeconfiguration code>) - puis
Enregistrer code>,
sauvegarde code > (par exemple, Ceci a>)