7
votes

Comment remplacer les paramètres.Settings variables par app.config variable

Comment puis-je modifier (ou remplacer) une variable de paramètres.Settings en ajoutant une variable à l'app.config sur la production?

est-ce possible quand même?


0 commentaires

5 Réponses :


-1
votes

Seulement via le code:

E.g. xxx

Si toutefois, votre problème maintient différentes valeurs de configuration dans des environnements différents, j'utiliserais des applications à la place.

Vous pouvez ensuite utiliser un remplacement de développeur fichier. xxx

voir http://www.compiledhents.com/2005/03/overriding-webconfig-app-Settings-with.html


1 commentaires

L'OP est de poser des questions sur les paramètres.Settings et non de la section applications .



0
votes

Cela dépend de la portée des paramètres. Si son réglage de la portée de la demande, la modification de sa valeur dans App.config est suffisante.

Toutefois, si c'est un paramètre d'application de l'utilisateur, la valeur présente dans l'app.config n'est que la valeur par défaut utilisée pour les nouveaux utilisateurs et que chaque utilisateur qui utilisait déjà l'application aura la valeur actuellement utilisée stockée dans un fichier séparé, l'utilisateur. Config, la modification de la valeur dans l'app.config n'aura aucun effet aux utilisateurs qui exécutent déjà l'application une fois.

En raison de la modification de la valeur d'un paramètre de portée utilisateur peut être une tâche gênante. Vous pouvez vérifier la réponse suivante pour plus d'informations sur la modification du paramètre d'application de l'utilisateur:

Changer la portée de l'utilisateur Réglage d'application


0 commentaires

0
votes

Utilisez différents fichiers de configuration pour la production et pour vous. Fondamentalement sur la production, vous compileriez en libération, donc si vous utilisez Visual Studio pour cela, utilisez des événements Post Build pour copier le fichier de configuration de version au cas où vous prépareriez une construction pour la production.

Je préférerais cela au lieu de la modifier du code, comme pour quelqu'un d'autre est beaucoup plus facile de voir le différent dans le fichier de configuration, puis va au fond du code pour trouver tout le Si / sinon Stuff.


0 commentaires

10
votes

Vous devez faire référence directement aux applications que vous essayez de remplacer et de spécifier explicitement la propriété ayant une valeur remplacée.

<configuration>
  <!-- section definitions for all elements in <configuration> tag -->
  <configSections>
    <!-- section group, meaning: there will be a <applicationSettings> tag in you configuration-->
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <!-- defines that there will be a <appname.Properties.Settings> tag inside your <applicationSettings> tag -->
      <section name="appname.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <applicationSettings>
    <appname.Properties.Settings>
      <!-- name of the property you want to override -->
      <setting name="setting1" serializeAs="String">
        <!-- new value -->
        <value>new string value</value>
      </setting>
    </appname.Properties.Settings>
  </applicationSettings>
</configuration>


5 commentaires

où est-ce que appname vient?


Nous avons migré vers .net 5 et nous utilisons app.config. Dans notre environnement de test avant de remplacer les paramètres d'autres projets tels que celui mais après la migration, cela ne fonctionne pas ... Avez-vous des idées.


Pour quiconque lisant la question de @ alexkvitchastiy, il apparaît que, dans .NET 5.0, la convention de dénomination a laissé tomber le .properties. donc son juste


@Scottymac Oh mec, si c'est vrai et ça marche dans .net 5 u me rend la personne la plus heureuse dans ce monde, parce que j'ai essayé beaucoup de solution de contournement différente!


@Scottymac idk homme, ça ne marche pas. Aussi, lorsque je crée un fichier de paramètres, il s'agit par défaut Créer in app.config ... Même si j'essaie de le remplacer de mon projet de test> J'ai essayé yourAppname.Settings et votreappname.properties. ...



0
votes

Pour une application d'application Scope Connection Valeur:

  <connectionStrings>
    <add name="appname.Properties.Settings.setting1" connectionString="test string" providerName="dbProvider"/>
  </connectionStrings>


0 commentaires