57 votes

System.Configuration.ConfigurationManager n'est pas disponible?

Dans un projet C# VS2005, j'ai ajouté une référence à System.configuration. Dans l'explorateur d'objets, je peux voir le System.Configuration.ConfigurationManager. Dans Intellisense, System.Configuration n'a que l'ancienne ConfigurationSettings, et pas ConfigurationManager.

Mon code System.Configuration.ConfigurationManager.AppSettings["MySetting"]

est mis en surbrillance comme une erreur de syntaxe et ne se compile pas.

Dans un projet différent, la même configuration exacte fonctionne parfaitement... des indices sur ce qu'il se passe?

0 votes

Quelle version du framework ciblez-vous?

130voto

Bien que la commande using System.Configuration; soit automatiquement générée dans la section using, pour une raison quelconque, la référence réelle n'est pas définie.

Allez dans ajouter une référence, onglet .Net, et choisissez System.Configuration.

ConfigurationManager sera maintenant résolu.

Si vous allez dans le projet où la même configuration exacte fonctionne très bien et regardez les références, vous verrez une référence à System.Configuration.

16voto

dyslexicanaboko Points 2116

Pour répondre à la question (bien qu'elle ait déjà été répondue plus de 5 fois), vous devez ajouter System.Configuration en tant que référence à votre projet.

Cependant, ce que je voudrais vraiment souligner est que j'ai souvent ajouté System.Configuration.dll aux références de mon projet, mais pour une raison spéciale, parfois ConfigurationManager n'apparaît toujours pas dans l'intelliSense même après avoir ajouté la référence à System.Configuration. Même si je supprime la référence et que je la réajoute.

La solution très simple à ce problème est la suivante :

  1. Ajouter la référence à System.Configuration.dll à votre projet
  2. Enregistrer vos fichiers
  3. Enregistrer votre Solution
  4. Fermer l'instance de Visual Studio qui vous pose problème
  5. Ré-ouvrir votre solution

Cet exercice simple permettra à Visual Studio de se comporter à nouveau correctement et d'arrêter de vous dire que vous n'avez pas ajouté votre référence à System.Configuration. Cet exercice m'aide généralement avec tous les comportements inexplicables de Visual Studio.

Cela m'est arrivé à plusieurs reprises dans VS2008 et VS2010 et ça fonctionne à chaque fois.

2 votes

Pour toutes les maux de tête, cela n'aurait pas dû être la solution. Mais c'était le cas.

2 votes

@DonRolling c'est ennuyeux n'est-ce pas :D? Heureux d'avoir pu aider.

11voto

kpollock Points 1173

Urgh - Erreur PICNIC. J'ai ajouté une référence au mauvais projet dans la solution...

0 votes

Ajoutait System.Management et je disais que je l'avais déjà ajouté... mon cerveau a cessé de fonctionner, a peut-être besoin d'un redémarrage.

9voto

Pour ceux qui passent constamment entre le développement de ASP.NET WebForms et WinForms, ce conseil peut s'avérer utile.

Si vous développez dans un projet C# WinForms, vous verrez que tenter d'utiliser un ConfigurationManager pour accéder à vos paramètres app.config entraînera l'erreur suivante :

Le nom 'ConfigurationManager' n'existe pas dans le contexte actuel

Comme c'est inclus par défaut dans les projets ASP.NET, cela peut être surprenant. Il vous suffit de faire un clic droit sur le nœud "Références" de votre projet et de chercher dans l'onglet ".NET". Faites défiler vers le bas et vous devriez trouver System.Configuration. Ajoutez ceci à votre projet et vous devriez être opérationnel.

Ajouter une référence à System.Configuration

Assurez-vous d'avoir déjà ajouté System.Configuration à la section using en haut de votre code, vous devriez maintenant pouvoir utiliser les paramètres de configuration (comme les chaînes de connexion) avec du code tel que le suivant :

con.ConnectionString = ConfigurationManager.ConnectionStrings[sConnection].ConnectionString;

0 votes

Cette réponse explique vraiment pourquoi vous ne rencontrez pas ce problème en travaillant sur un projet ASP.NET, mais que vous êtes soudainement confus en travaillant sur WinForms.

5voto

  1. Allez à Gérer les packages NuGet
  2. Parcourir System.Configuration
  3. Installez le package System.Configuration.ConfigurationManager. Afficher

1 votes

Après plus de 10 ans? Étais-tu dans une machine à remonter le temps?

0 votes

10 ans ce n'est pas si long pour une bonne base de code. Je suis assez sûr que beaucoup du code pour Windows et Linux aujourd'hui a été écrit il y a de nombreuses années. Je crois que beaucoup de la base de code moderne de Windows provient initialement du projet Windows NT (commencé en 1988).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X