Je travaille sur une bibliothèque de classes C # qui doit pouvoir lire les paramètres du web.config
ou du app.config
fichier (selon que la DLL est référencée à partir d'une application Web ASP.NET ou d'une application Windows Forms).
J'ai trouvé ça
ConfigurationSettings.AppSettings.Get("MySetting")
fonctionne, mais ce code a été marqué comme déconseillé par Microsoft.
J'ai lu que je devrais utiliser:
ConfigurationManager.AppSettings["MySetting"]
Cependant, la System.Configuration.ConfigurationManager
classe ne semble pas être disponible à partir d'un projet de bibliothèque de classes C #.
Quelle est la meilleure façon de procéder?
c#
.net
configuration
appsettings
Russ Clark
la source
la source
Réponses:
Vous devrez ajouter une référence à
System.Configuration
dans le dossier de références de votre projet .Vous devriez certainement utiliser le
ConfigurationManager
over the obsoleteConfigurationSettings
.la source
Pour un exemple de fichier app.config comme ci-dessous:
Vous lisez les paramètres d'application ci-dessus en utilisant le code ci-dessous:
Vous devrez peut-être également ajouter une référence à
System.Configuration
dans votre projet s'il n'y en a pas déjà une. Vous pouvez ensuite accéder aux valeurs comme ceci:la source
Mise à jour pour .NET Framework 4.5 et 4.6; les éléments suivants ne fonctionneront plus:
Accédez maintenant à la classe Setting via Propriétés:
Voir Gestion des paramètres d'application pour plus d'informations.
la source
Faites un clic droit sur votre bibliothèque de classes et choisissez l'option "Ajouter des références" dans le menu.
Et dans l'onglet .NET, sélectionnez System.Configuration. Cela inclurait le fichier DLL System.Configuration dans votre projet.
la source
ConfigurationManager.ConnectionStrings[0].ConnectionString
J'utilise ceci, et cela fonctionne bien pour moi:
la source
Lire depuis la configuration:
Vous devrez ajouter une référence à la configuration:
Obtenez de la valeur en utilisant le code suivant:
Enregistrez dans la configuration:
la source
Vous devez ajouter une référence à l'assembly System.Configuration au projet.
la source
Vous ajoutez peut-être le fichier App.config à un fichier DLL. App.Config ne fonctionne que pour les projets exécutables, car tous les fichiers DLL prennent la configuration du fichier de configuration pour le fichier EXE en cours d'exécution.
Supposons que vous ayez deux projets dans votre solution:
Votre problème peut être lié au fait que vous incluez le fichier app.config dans SomeDLL et non SomeExe. SomeDll est capable de lire la configuration du projet SomeExe.
la source
Essaye ça:
Dans le fichier web.config , cela devrait être la structure suivante:
la source
J'ai eu le même problème. Lisez-les simplement de cette façon: System.Configuration.ConfigurationSettings.AppSettings ["MySetting"]
la source
This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings
web.config
est utilisé avec les applications Web.web.config
par défaut, plusieurs configurations sont requises pour l'application Web. Vous pouvez avoir unweb.config
pour chaque dossier sous votre application Web.app.config
est utilisé pour les applications Windows. Lorsque vous générez l'application dans Visual Studio, elle sera automatiquement renommée<appname>.exe.config
et ce fichier doit être fourni avec votre application.Vous pouvez utiliser la même méthode pour appeler les
app settings
valeurs des deux fichiers de configuration: System.Configuration.ConfigurationSettings.AppSettings ["Key"]la source
System.Configuration.COnfigurationSettings.AppSettings.Get("Key")
au lieu d'utiliser les crochets.Comme j'ai trouvé la meilleure approche pour accéder aux variables de paramètres d'application de manière systématique en créant une classe wrapper sur System.Configuration comme ci-dessous
Maintenant, nous pouvons accéder aux variables de paramètres nécessaires par des noms codés en dur en utilisant une autre classe comme ci-dessous:
la source
Je vous recommande fortement de créer un wrapper pour cet appel. Quelque chose comme un
ConfigurationReaderService
et utiliser l' injection de dépendance pour obtenir cette classe. De cette façon, vous pourrez isoler ces fichiers de configuration à des fins de test.Utilisez donc la
ConfigurationManager.AppSettings["something"];
suggestion et renvoyez cette valeur. Avec cette méthode, vous pouvez créer une sorte de retour par défaut si aucune clé n'est disponible dans le fichier .config.la source
app.DEBUG.config
,app.RELEASE.config
etapp.TEST.config
, etc.Vous pouvez également utiliser Formo :
Configuration:
Code:
la source
Juste pour être complet, il existe une autre option disponible pour les projets Web uniquement: System.Web.Configuration.WebConfigurationManager.AppSettings ["MySetting"]
L'avantage de ceci est qu'il ne nécessite pas l'ajout d'une référence supplémentaire, il peut donc être préférable pour certaines personnes.
la source
Étape 1: Faites un clic droit sur l'onglet références pour ajouter une référence.
Étape 2: cliquez sur l'onglet Assemblages
Étape 3: Recherchez «System.Configuration»
Étape 4: cliquez sur OK.
Ensuite, cela fonctionnera.
la source
Je crée toujours une interface IConfig avec des propriétés typesafe déclarées pour toutes les valeurs de configuration. Une classe d'implémentation Config encapsule ensuite les appels à System.Configuration. Tous vos appels System.Configuration sont maintenant au même endroit, et il est tellement plus facile et plus propre de conserver et de suivre les champs utilisés et de déclarer leurs valeurs par défaut. J'écris un ensemble de méthodes d'assistance privées pour lire et analyser les types de données courants.
En utilisant un framework IoC , vous pouvez accéder aux champs IConfig n'importe où dans votre application en passant simplement l'interface à un constructeur de classe. Vous pouvez également ensuite créer des implémentations simulées de l'interface IConfig dans vos tests unitaires afin que vous puissiez désormais tester différentes valeurs de configuration et combinaisons de valeurs sans avoir à toucher votre fichier App.config ou Web.config.
la source
Une autre solution possible:
la source
J'essaie de trouver un correctif pour ce même problème depuis quelques jours maintenant. J'ai pu résoudre ce problème en ajoutant une clé dans la balise appsettings du fichier web.config . Cela devrait remplacer le fichier .dll lors de l'utilisation de l'aide.
la source
Vous pouvez utiliser la ligne ci-dessous. Dans mon cas, cela fonctionnait: System.Configuration.ConfigurationSettings.AppSettings ["yourKeyName"]
Vous devez vous assurer que la ligne de code ci-dessus est également l'ancienne version et qu'elle est obsolète dans les nouvelles bibliothèques.
la source
Le ConfigurationManager n'est pas ce dont vous avez besoin pour accéder à vos propres paramètres.
Pour ce faire, vous devez utiliser
{YourAppName}.Properties.Settings.{settingName}
la source
J'ai pu faire fonctionner l'approche ci-dessous pour les projets .NET Core:
Pas:
J'ai créé une méthode Login () pour montrer l'utilisation de la classe de configuration.
Créez appsettings.json dans votre projet avec du contenu:
la source
Si vous avez besoin / envie d'utiliser la
ConfigurationManager
classe ...Vous devrez peut-être charger
System.Configuration.ConfigurationManager
par Microsoft via NuGet Package ManagerMicrosoft Docs
Une chose à noter dans les documents ...
la source
Veuillez vérifier la version .NET sur laquelle vous travaillez. Il doit être supérieur à 4. Et vous devez ajouter la bibliothèque système System.Configuration à votre application.
la source
Voici un exemple:
App.config
la source