web-dev-qa-db-fra.com

Qu'est-ce que App.config dans C # .NET? Comment l'utiliser?

J'ai réalisé un projet en C # .NET où mon fichier de base de données est un classeur Excel. Étant donné que l'emplacement de la chaîne de connexion est codé en dur dans mon codage, son installation ne pose pas de problème, mais il en existe un pour d'autres systèmes.

Existe-t-il un moyen d'inviter l'utilisateur à définir un chemin une fois l'installation de l'application terminée?

La réponse que j'ai obtenue était "Utiliser App.Config" ... quelqu'un peut-il dire quelle est cette App.config et comment l'utiliser dans mon contexte ici?

156
shyam

Dans sa forme la plus simple, app.config est un fichier XML contenant de nombreuses sections de configuration prédéfinies et prenant en charge les sections de configuration personnalisées. Une "section de configuration" est un extrait de code XML avec un schéma destiné à stocker un certain type d'informations.

Les paramètres peuvent être configurés à l'aide de sections de configuration intégrées telles que connectionStrings ou appSettings. Vous pouvez ajouter vos propres sections de configuration personnalisées. Il s'agit d'un sujet avancé, mais très puissant pour la construction de fichiers de configuration fortement typés.

Les applications Web ont généralement un fichier web.config, tandis que les applications de service et d'interface graphique Windows ont un fichier app.config.

Les fichiers de configuration au niveau de l'application héritent des paramètres des fichiers de configuration globaux, par exemple. le machine.config.

Lecture depuis l'App.Config

Les chaînes de connexion ont un schéma prédéfini que vous pouvez utiliser. Notez que ce petit extrait est en réalité un fichier app.config (ou web.config) valide:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>   
        <add name="MyKey" 
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

Une fois que vous avez défini votre app.config, vous pouvez le lire dans le code à l'aide de la classe ConfigurationManager . Ne soyez pas intimidé par les exemples MSDN verbeux; c'est en fait assez simple.

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

Écrire à la App.Config

Changer fréquemment les fichiers * .config n’est généralement pas une bonne idée, mais il semblerait que vous souhaitiez uniquement effectuer une configuration unique.

Voir: Changer la chaîne de connexion et recharger app.config au moment de l'exécution qui décrit comment mettre à jour la section connectionStrings du fichier * .config au moment de l'exécution.

Notez qu'idéalement, vous effectueriez ces modifications de configuration à partir d'un simple programme d'installation.

Emplacement de l'App.Config à l'exécution

Q: Supposons que je modifie manuellement certains <value> dans app.config, enregistrez-le, puis fermez-le. Maintenant, lorsque je vais dans mon dossier bin et que je lance le fichier .exe à partir d'ici, pourquoi ne reflète-t-il pas les modifications appliquées?

A: lorsque vous compilez une application, son application.config est copié dans le répertoire bin1 avec un nom qui correspond à votre exe. Par exemple, si votre fichier EXE s'appelle "test.exe", il devrait y avoir un "text.exe.config" dans votre répertoire bin. Vous pouvez modifier la configuration sans recompiler, mais vous devrez éditer le fichier de configuration créé lors de la compilation, et non le fichier app.config d'origine.

1: Notez que les fichiers web.config ne sont pas déplacés, mais restent au même emplacement lors de la compilation et du déploiement. Une exception à cela est lorsqu'un web.config est transformé .

.NET Core

De nouvelles options de configuration ont été introduites avec .NET Core. Le fonctionnement des fichiers * .config ne semble pas avoir changé, mais les développeurs sont libres de choisir de nouveaux paradigmes de configuration plus souples.

176
Tim Medora

Simplement, App.config est un format de fichier basé sur XML qui contient le Configurations au niveau de l’application .

Exemple:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

Vous pouvez accéder aux configurations en utilisant ConfigurationManager comme indiqué dans l'extrait de code ci-dessous:

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

Remarque: ConfigurationSettings est une méthode obsolète permettant de récupérer des informations de configuration.

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];
41
Furqan Safdar

Juste pour ajouter quelque chose qui me manque dans toutes les réponses - même si cela semble ridicule et évident dès que vous le savez:

Le fichier doit être nommé "App.config" ou "app.config" et peut être situé dans votre projet au même niveau que par exemple. Program.cs.

Je ne sais pas si d'autres emplacements sont possibles, d'autres noms (tels que application.conf, comme suggéré dans la documentation d'ODP.net) ne fonctionnaient pas pour moi.

PS J'ai commencé avec Visual Studio Code et créé un nouveau projet avec "dotnet new". Aucun fichier de configuration n'est créé dans ce cas, je suis sûr qu'il existe d'autres cas. PPS. Vous devrez peut-être ajouter un package de nuget pour pouvoir lire le fichier de configuration. Dans le cas de .NET CORE, ce serait "dotnet add package System.Configuration.ConfigurationManager --version 4.5.0"

2
Dantel35

App.Config est un fichier XML utilisé comme fichier de configuration pour votre application. En d'autres termes, vous stockez dans celui-ci tout paramètre que vous souhaitez modifier sans avoir à changer de code (et à recompiler). Il est souvent utilisé pour stocker des chaînes de connexion.

Voir cet article MSDN pour savoir comment faire.

1
System Down

Vous pouvez accéder aux clés dans App.Config en utilisant:

ConfigurationSettings.AppSettings["KeyName"]

Jetez un oeil à ce fil

0
CloudyMarble