현재 컨텍스트에 'ConfigurationManager'라는 이름이 없습니다.


468

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>

1
코드를 추가 할 수 있습니까? 어셈블리를 수락하지 않는다는 것은 무엇을 의미합니까? 특정 오류 메시지가 나타 납니까?
Joshua Belden

답변:


820

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

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

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

using System.Collections.Specialized;

1
+1 감사합니다 Kieran. 'using'문을 포함하여 대부분의 다른 어셈블리를 간단히 호출 할 수있을 때 왜이 작업을 수행해야하는지 알고 있습니까?
초에 Dhaust

13
이것은 내 이해입니다. 잘못되었을 수 있습니다. 참조를 추가하면 dll을 compile / build의 bin 폴더에 복사하도록 요청합니다. 코어로 보이는 일부 dll은 프로젝트가 생성 될 때, 즉 파일-> 새 프로젝트로 이동하면 참조가 해당 시점에 설정 될 때 추가됩니다. 그들은 모두 당신을 위해 수행되고 일부는 수동으로해야한다는 동일한 프로세스를 거쳐야합니다. System dll에 대한 참조를 삭제하고 모든 코드가 실패하는 것을 보면서 테스트 할 수 있습니다. =)
Kieran

7
확인. 그래서 조금 더 연구를 해보았 고 위의 내용이 대부분 사실이라는 것을 알았습니다. 그러나 일부 파일은 bin이 로컬 어셈블리 캐시 인 GAC (Global Assembly Cashe)에 있으므로 실행시 bin 폴더에 쓸 필요가 없습니다. System.dll과 같습니다.
Kieran

4
'System.Configuration'네임 스페이스는 'System'dll에서 찾을 수 있으므로 Intellisense가 'using System.Configuration;'을 허용 할 때 약간의 헤드 스크래치가 발생할 수 있습니다. System.Configuration.dll을 프로젝트에서 참조하지 않으면 ConfigurationManager를 찾을 수 없습니다.
jaybro

99

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

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

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


40

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


16
7 년이 지난 후에도 이것이 얼마나 자주 대답인지는 여전히 부끄러운 일입니다.
복원 Monica Monica Cellio

4
실제로 답변이 아닌 경우 자신의 답변을 답변으로 표시하는 것과 같습니다. 너무 나쁜 모드는 실제 정답을 위해 편집 할 수 없습니다. 친구는 포인트에 대한 자신의 답변을 표시 ....
ggiaquin16

1
@ ggiaquin16 너는 너 자신을 받아들이면 점수를 얻지 못한다;)
JAD

@calios 또는 원래 질문을 읽으면 질문자가 질문의 첫 번째 버전에서 프로젝트에 어셈블리를 이미 추가했음을 알 수 있습니다. 이 특정 어셈블리 및 VS 버전의 경우 IDE를 다시 시작해야했습니다. 그렇지 않으면 오류가 계속 발생합니다. 그것이 해결책이었습니다. 여기서 가장 높은 등급의 답변 두 개는 실제로 묻는 질문과 관련이 없었지만, 누군가 먼저 질문을 읽지 않고 질문에 대답하는 이유는 궁금하지 않습니다. (이 경우에는 매우 효과적이라고 생각되는 점에 대해서만 일을하려는 맥락에서 ...)
ebyrob

24

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

  1. Project->로 이동Add Reference

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

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

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


19

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

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

9

당신이 많은 경고를 받고 있다면 (내 경우에는 솔루션의 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 경고가 즉시 사라집니다.

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


9

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

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

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

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 

6

다른 것이 아니라 .NET 어셈블리에 대한 참조를 추가 했습니까? 참조를 제거한 다음 다시 추가하여 Visual Studio 참조 대화 상자의 .NET 탭에서 선택하십시오. 최신 버전은 GAC에서 2.0.0.0이어야합니다.


속성 창의 어셈블리 세부 정보 : 이름 : System.configuration 경로 : C : \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.configuration.dll 버전 : 2.0.0.0 런타임 버전 : v2.0.50727 수상한 것 같습니까? 감사!
pencilslate

아니요, 정확히 예상대로입니다. 정말 이상합니다-미안하지만 전에는 본 적이 없습니다. 행운을 빕니다!
Dan Diplo

6
  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭
  2. Manager NuGet 패키지 선택
  3. 시스템 찾기
  4. Microsoft의 System.Configuration.ConfigurationManager를 선택하십시오.
  5. 설치

지금 당신은 할 수 있습니다 :

using System.Configuration;

4

상태 확인을 위해 새 웹 응용 프로그램 프로젝트를 만들고 Default.aspx 페이지의 코드를 엽니 다. Page_Load에 줄을 추가하여 연결 문자열에 액세스하십시오.

기본적으로 System.Configuration이 참조로 추가되어 있어야합니다. 또한 코드 파일 맨 위에 using 문이 표시되어 있어야합니다.

파일 뒤의 코드는 이제 다음과 같으며 아무런 문제없이 컴파일됩니다.

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

이것은 web.config에 이름이 "MyConnectionStringName"과 같은 연결 문자열이 있다고 가정합니다 ...

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="MyConnectionStringName"
            connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

그래, 내가 아는 초급이야 그러나 더 좋은 아이디어가 없다면 때로는 작동 해야하는 간단한 것을 확인하는 데 도움이됩니다.


3

그냥 설치

Install-Package System.Configuration.ConfigurationManager -Version 4.5.0

그런 다음 사용

using System.Configuration;

2

이 코드가 라이브러리 프로젝트와 같은 별도의 프로젝트에있는 경우 system.configuration에 대한 참조를 추가하는 것을 잊지 마십시오.


0

실수로 다른 관련없는 프로젝트에 대한 참조를 추가하면이 오류가 발생할 수도 있습니다. 그것이 당신에게 적용되는지 확인하십시오.


0

이 문제를 해결하려면 솔루션 탐색기로 이동하여 참조를 마우스 오른쪽 버튼으로 클릭하고 참조 추가를 클릭하고 .net을 선택한 다음 system.configuration을 클릭하십시오.


0

구성 관리자 파일을 추가하여 데이터베이스 web.config에 연결하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.