현재 컨텍스트에 '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.