none
vc2012에서 dll 참조 오류메시지 표시 RRS feed

  • 질문

  • vc2012로 C# 개발 중입니다

    자체 제작한 dll 파일을 메인 프로젝트에 참조 추가 한후

    실행 하면

    컴파일 잘 되고 실행 잘 되고 기능도 정상 동작 합니다

    하지만 코드 편집기에서는

    빨간줄이 그어지면서 형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 잇는지 확인하십시오

    라는 메시지가 나옵니다

    혹시 vc2012의 버그 인가요?

    아님 코드가 잘못된 건가요

    정상 동작은 되지만 찝찝한 기분에 질문드립니다.

    2013년 5월 27일 월요일 오전 2:09

모든 응답

  • [원인]

    이 오류는 다음과 같은 원인으로 인하여 발생할 수 있습니다.
    • 가져오려고 하는 형식이나 네임스페이스의 이름을 잘못 입력했을 수 있습니다.  이름을 잘못 입력하면 컴파일러가 해당 코드에서 참조하는 형식이나 네임스페이스에 대한 정의를 찾을 수 없습니다.  이 오류의 가장 일반적인 원인은 C#에서 대/소문자가 구분되고 형식을 참조할 때 올바른 대/소문자를 사용하지 않았기 때문입니다.  예를 들어, 다음 코드를 살펴 봅시다.
      Dataset ds;
      이 코드에서는 Dataset의 's'가 소문자로 입력되었기 때문에  컴파일러 오류 CS0246이 발생합니다.
    • 이 오류가 네임스페이스에 대한 참조 때문에 발생한 것이면 해당 프로젝트에서 참조하는 네임스페이스를 포함하는 어셈블리가 없을 수 있습니다.  예를 들어, 다음 네임스페이스를 사용할 수 있습니다.
      using Accessibility;
      하지만 해당 프로젝트에서 참조하는 Accessibility.dll 어셈블리가 없기 때문에 컴파일러 오류 CS0246이 발생합니다.
    • 오류가 형식에 대한 참조 때문에 발생한 것이면 적절한 using 지시문이 없거나 해당 형식의 이름을 정규화하지 않았을 수 있습니다.  다음 코드를 살펴 봅시다.
      DataSet ds;
      DataSet 형식을 사용하려면 두 가지 사항이 필요합니다.  첫째, DataSet 형식에 대한 정의를 포함하는 어셈블리에 대한 참조가 필요합니다.  둘째, DataSet이 있는 네임스페이스에 대한 using 지시문이 필요합니다.  예를 들어, DataSet이 System.Data 네임스페이스에 있기 때문에 코드 파일의 시작 부분에 다음 명령문이 필요합니다.
      using System.Data;
      두번째 사항은 생략할 수 있습니다.  하지만 이 사항을 생략하면 DataSet 형식을 참조할 때 해당 DataSet 형식을 정규화해야 합니다.  DataSet 형식의 정규화는 코드에서 DataSet 형식을 참조할 때마다 AND 형식의 네임스페이스를 사용한다는 것을 의미합니다.  따라서 두번째 사항을 생략할 경우에는 선언 코드를 다음과 같이 변경해야 합니다.
      System.Data.DataSet ds;

    [해결책]

    이 컴파일러 오류가 발생하면 철자부터 검사해야 합니다.  앞서 설명한 것처럼 이 오류의 가장 일반적인 원인은 형식이나 네임스페이스 이름의 대/소문자가 잘못 입력되었기 때문입니다.  대/소문자를 비롯하여 형식이나 네임스페이스의 이름이 올바르게 입력되었으면 다음 사항을 검사합니다.
    1. 어셈블리 참조

      네임스페이스가 포함된 어셈블리를 참조했는지 확인합니다.  Visual Studio .NET에서 개발하는 중이면 프로젝트 메뉴에서 참조 추가를 누른 다음  .NET 탭에서 가져오려고 하는 네임스페이스가 포함된 어셈블리를 선택하거나 찾아보기를 사용하여 해당 어셈블리가 포함된 폴더로 찾아갑니다.  명령줄 컴파일러를 사용하는 중이면 적절한 스위치(.reference)를 컴파일 명령문에 추가합니다.
    2. 네임스페이스

      다음과 같이 형식 참조가 포함된 코드 파일의 맨 위에 using 문을 추가하여 네임스페이스를 프로젝트에 가져오고 있는지 확인합니다.
      using System.Data;
      using 문이 없으면 다음과 같이 해당 형식에 대한 참조를 정규화합니다.
      System.Data.DataSet ds;

    제시해 드린 답변이 도움이 되었기를 바랍니다.
     
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    2013년 5월 27일 월요일 오전 2:36
    중재자