1

J'ai un processus de construction automatisé qui configure l'application pour un mode spécifié (par exemple, Dev, uat, live). En fonction de ce mode, je veux mettre à jour les chaînes de connexion à la chaîne correspondante.Force la régénération du fichier Settings.settings après modification dans app.config

Cependant, dans mon Data Access Layer, il y a un fichier app.config qui stocke la chaîne de connexion et cela est utilisé pour alimenter le fichier Settings.Settings. Dans mon générateur, je mets à jour le fichier xml de app.config avec la nouvelle chaîne de connexion, puis la solution est créée, mais le fichier Settings.setting n'est pas régénéré avec la chaîne de connexion app.config mise à jour et l'application ne se connecte pas la bonne DB.

Est-il possible de faire cela ou est-ce que je vais dans le mauvais sens à travers une mauvaise compréhension de la façon dont ces fichiers de configuration/paramètres fonctionnent?

Merci Stuart

Répondre

2

Ouais, tu le fais en arrière. L'EDI génère le contenu du fichier .config à partir des paramètres que vous définissez dans le concepteur de paramètres. Cela ne fonctionne pas dans l'autre sens. Si l'obtention de la chaîne de connexion est directement liée à la construction, il est important de définir la valeur par défaut dans le concepteur de paramètres. Ou ne le stockez pas dans un paramètre.

+0

Merci pour votre réponse! J'avais précédemment essayé de mettre à jour la chaîne de connexion dans le fichier Settings.Designer.cs, mais il est divisé sur deux lignes et en texte brut, ce qui rend beaucoup plus difficile de changer automatiquement. Avez-vous des idées d'autres façons de le faire? – Stuart

+0

Je ne reçois pas l'exigence "changer automatiquement". En fin de compte, il devra toujours être modifié à la main pour correspondre au nom et à l'emplacement du serveur dbase déployé. Si cela doit être automatique, l'utilisation d'un paramètre peut ne pas être la bonne solution. Considérez également, disons, SqlConnectionStringBuilder pour le générer lors de l'exécution. –

+1

Par changement automatique, je veux dire automatiquement par le processus Builder. Au moment de créer une construction, je dois ouvrir le fichier de paramètres et éditer manuellement la chaîne de connexion. Je voudrais pouvoir que le constructeur remplace la chaîne de connexion dans ces dossiers par lui-même. Le constructeur a la possibilité d'interroger XML et de remplacer les valeurs, ce qui explique pourquoi je cherchais à changer le fichier app.config. – Stuart

1

Il y a une façon de passer outre les Settings.settings:

Project.Properties.Settings.Default["ConnectionString"] = ConfigurationManager.ConnectionStrings["Project.Properties.Settings.ConnectionString"].ConnectionString; 
Questions connexes