El nombre ‘ConfigurationManager’ no existe en el contexto actual

Estoy intentando acceder a connectionStrings desde el archivo de configuración. El código es ASP.NET + C #. He agregado System.Configuration como referencia y también he mencionado el uso. Pero aún así no aceptaría la asamblea.

Estoy usando VSTS 2008. ¿Alguna idea de cuál podría ser el motivo?

Otra cosa extraña es el nombre del ensamblado que se muestra como “System.configuration”, una letra minúscula c que no es como se muestran los nombres para otros ensambles del sistema.

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; namespace Utility { public class CommonVariables { public static String ConnectionString { get { return ConfigurationManager.ConnectionStrings["EmployeeEntities"].ConnectionString; } } } } 

Config:

       

No solo es necesario usar el espacio de nombres System.Configuration . También debe agregar la referencia al ensamblado System.Configuration.dll , por

  1. Haga clic derecho en Referencias / Dependencias
  2. Elija Agregar referencia
  3. Encuentre y agregue System.Configuration .

Esto funcionará con seguridad. También para NameValueCollection debes escribir:

 using System.Collections.Specialized; 

En su proyecto, haga clic con el botón derecho, Agregue referencia … , en la pestaña .NET, busque el nombre del componente System.Configuration y haga clic en Aceptar.

using System.Configuration le dice al comstackdor / IntelliSense que busque en ese espacio de nombres las clases que use. De lo contrario, tendría que usar el nombre completo ( System.Configuration.ConfigurationManager ) cada vez. Pero si no agrega la referencia, ese espacio de nombres / clase no se encontrará en ningún lado.

Tenga en cuenta que una DLL puede tener cualquier espacio de nombres, por lo que el archivo System.Configuration.dll podría, en teoría, tener el espacio de nombres Some.Random.Name . Para mayor claridad / consistencia son generalmente los mismos, pero hay excepciones.

Ok … funcionó después de reiniciar el VSTS. El enlace sugirió la solución para el mismo problema. Ojalá pudiera haberlo visto antes. 🙂

Agregando esta respuesta, ya que ninguna de las soluciones sugeridas funciona para mí.

  1. Haga clic derecho en la pestaña de referencias para agregar referencia.
  2. Haga clic en la pestaña Conjuntos
  3. Buscar ‘System.Configuration’
  4. Haga clic en Aceptar.

Obtuve una mejor solución para el administrador de configurationmanager does not exist in the current context problemas configurationmanager does not exist in the current context .

Para una cadena de conexión de lectura desde web.config necesitamos usar la clase ConfigurationManager y su método. Si desea utilizar necesita agregar espacio de nombres usando System.Configuration ;

Aunque utilizó este espacio de nombres, cuando intenta utilizar la clase ConfigurationManager , el sistema muestra un error “configurationmanager no existe en el contexto actual”. Para resolver este problema:

 ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 

Si recibes muchas advertencias (¡en mi caso 64 en una solución!) Como

CS0618: ‘ConfigurationSettings.AppSettings’ está obsoleto: ‘Este método está obsoleto, ha sido reemplazado por System.Configuration! System.Configuration.ConfigurationManager.AppSettings’

porque estás actualizando un proyecto anterior, puedes ahorrar mucho tiempo de la siguiente manera:

  1. Agregue System.Configuration como referencia a su sección de Referencias .
  2. Agregue las siguientes dos instrucciones using a la parte superior de cada archivo de clase ( .cs ):

    using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;

Por este cambio todas las ocurrencias de

 ConfigurationSettings.AppSettings["mySetting"] 

ahora hará referencia al administrador de configuración correcto, ya no como el obsoleto, y todas las advertencias CS0618 desaparecerán inmediatamente.

Por supuesto, tenga en cuenta que este es un truco rápido. A largo plazo, debería considerar refactorizar el código.

¿Estás seguro de que has agregado una referencia al ensamblado de .NET y no algo más? Quitaría su referencia y luego volvería a agregarla, asegurándose de seleccionar desde la pestaña .NET en el diálogo de referencia de Visual Studio; la última versión debería ser 2.0.0.0 en GAC.

Para un control de cordura, intente crear un nuevo proyecto de aplicación web, abra el código de la página Default.aspx. Agregue una línea en Page_Load para acceder a su cadena de conexión.

Debería tener System.Configuration agregado como referencia por defecto. También debería ver la statement de uso en la parte superior de su archivo de código ya.

Mi código detrás del archivo ahora se ve así y comstack sin problemas.

 using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; namespace WebApplication1 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string connString = ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString; } } } 

Esto supone que tengo una cadena de conexión en mi web.config con un nombre igual a “MyConnectionStringName” como …

         

Sí, es elemental, lo sé. Pero si no tienes mejores ideas, a veces es útil verificar algo realmente simple que sepa que debería funcionar.

Si este código está en un proyecto separado, como un proyecto de biblioteca. No olvide añadir una referencia a system.configuration.

También puede obtener este error si agrega una referencia a un proyecto diferente, no relacionado por error. Verifique si eso se aplica a usted.

Para resolver este problema, vaya a Solution Explorer y haga clic derecho en reference y haga clic en add reference y elija .net y encuentre system.configuration seleccione un clic ok