[C#] 현재 컨텍스트에 ‘ConfigurationManager’라는 이름이 없습니다.

connectionStrings구성 파일에서 액세스하려고 합니다. 코드는 ASP.NET + C #입니다. System.Configuration참조에 추가 하고 사용에 대해서도 언급했습니다. 그러나 여전히 어셈블리를 수락하지 않습니다.

VSTS 2008을 사용하고 있습니다. 이유가 무엇인지 아십니까?

또 다른 이상한 점은 “System.configuration”으로 표시되는 어셈블리 이름입니다. 소문자 c는 다른 시스템 어셈블리의 이름이 표시되는 방식이 아닙니다.

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; }
        }
    }
}

구성 :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="qbankEntities" connectionString="metadata=res://*/qbankModel.csdl|res://*/qbankModel.ssdl|res://*/qbankModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>



답변

namespace 를 사용할 필요는 없습니다 System.Configuration. 당신은에 대한 참조를 추가 할 수도 있습니다 조립 System.Configuration.dll 에 의해,

  1. 참조 / 종속성을 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 참조 추가를 선택 하십시오.
  3. 찾아서 추가하십시오 System.Configuration.

이것은 확실히 작동합니다. 또한 NameValueCollection다음을 작성해야합니다.

using System.Collections.Specialized;


답변

프로젝트에서 참조 추가 …를 마우스 오른쪽 단추로 클릭 하고 .NET 탭에서 System.Configuration구성 요소 이름을 찾고 확인을 클릭하십시오.

using System.Configuration컴파일러 / IntelliSense가 해당 네임 스페이스에서 사용하는 클래스를 검색하도록 지시합니다. 그렇지 않으면 System.Configuration.ConfigurationManager매번 전체 이름 ( ) 을 사용해야합니다 . 그러나 참조를 추가하지 않으면 해당 네임 스페이스 / 클래스를 찾을 수 없습니다.

DLL은 네임 스페이스를 가질 수 있으므로 파일 System.Configuration.dll은 이론적으로 네임 스페이스를 가질 수 있습니다 Some.Random.Name. 명확성 / 일관성을 위해 일반적으로 동일하지만 예외가 있습니다.


답변

좋아. VSTS를 다시 시작한 후에 작동했습니다. 링크는 같은 문제에 대한 솔루션을 제안했다. 내가 전에 그것을 볼 수 있었으면 좋겠다. 🙂


답변

System.Configuration모든 프로젝트에 참조를 추가하면 이 문제가 해결됩니다.

  1. Project->로 이동Add Reference

  2. 표시되는 상자 All assemblies에서 왼쪽 목록 의 목록 탭을 클릭하십시오 .

  3. 중앙 목록에서 스크롤 System.Configuration하여 상자가 선택되어 있는지 확인하십시오.

  4. 적용하려면 확인을 클릭하십시오. 이제 ConfigurationManager수업 에 액세스 할 수 있습니다 .


답변

제안 된 솔루션 중 어느 것도 나를 위해 작동하지 않으므로이 답변을 추가하십시오.

  1. 참조 탭을 마우스 오른쪽 버튼으로 클릭하여 참조를 추가하십시오.
  2. 어셈블리 탭을 클릭하십시오
  3. ‘System.Configuration’을 검색하십시오.
  4. 확인을 클릭하십시오.

답변

당신이 많은 경고를 받고 있다면 (내 경우에는 솔루션의 64)!

CS0618 : ‘ConfigurationSettings.AppSettings’는 더 이상 사용되지 않습니다 : ‘이 방법은 더 이상 사용되지 않으며 System.Configuration! System.Configuration.ConfigurationManager.AppSettings로 대체되었습니다.’

이전 프로젝트를 업그레이드하기 때문에 다음과 같이 많은 시간을 절약 할 수 있습니다.

  1. 참조 섹션에 System.Configuration참조로 추가 하십시오.
  2. using각 클래스 ( .cs) 파일 의 맨 위에 다음 두 명령문을 추가 하십시오.

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

이 변화에 의해 모든 발생

ConfigurationSettings.AppSettings["mySetting"]

이제 더 이상 사용되지 않는 올바른 구성 관리자를 참조하고 모든 CS0618 경고가 즉시 사라집니다.

물론 이것은 빠른 해킹입니다. 장기적으로 코드 리팩토링을 고려해야합니다.


답변

이 문제에 대한 더 나은 해결책을 얻었습니다 configurationmanager does not exist in the current context.

연결 문자열을 읽으려면 클래스와 해당 메소드 web.config를 사용해야 ConfigurationManager합니다. 사용하려면 System.Configuration;를 사용하여 네임 스페이스를 추가해야합니다 .

이 네임 스페이스를 사용했지만 ConfigurationManager클래스 를 사용하려고 하면 시스템에 “현재 컨텍스트에 구성 관리자가 없습니다”라는 오류가 표시됩니다. 이 문제를 해결하려면

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString;