다음을 통해 공유


어셈블리 참조와 관련된 오류 및 경고 해결

  • CS0012: 'type' 형식은 참조되지 않는 어셈블리에 정의됩니다. 어셈블리 'assembly'에 대한 참조를 추가해야 합니다.
  • CS0234: 형식 또는 네임스페이스 이름이 네임스페이스에 없습니다(어셈블리 참조가 누락되었나요?)
  • CS0246: 형식 또는 네임스페이스 이름을 찾을 수 없습니다(using 지시문 또는 어셈블리 참조가 누락되었나요?)
  • CS0400: 전역 네임스페이스에서 형식 또는 네임스페이스 이름을 찾을 수 없습니다(어셈블리 참조가 누락되었나요?)
  • CS0735: 특성의 TypeForwardedToAttribute 인수로 지정된 형식이 잘못되었습니다.
  • CS1068: 전역 네임스페이스에서 형식 이름을 찾을 수 없습니다. 이 형식은 다른 어셈블리로 전달되었습니다. 해당 어셈블리에 대한 참조를 추가하는 것이 좋습니다.
  • CS1069: 네임스페이스에서 형식 이름을 찾을 수 없습니다. 이 형식은 다른 어셈블리로 전달되었습니다. 해당 어셈블리에 대한 참조를 추가하는 것이 좋습니다.
  • CS1070: 형식 이름을 찾을 수 없습니다. 이 형식은 다른 어셈블리로 전달되었습니다. 해당 어셈블리에 대한 참조를 추가하는 것이 좋습니다.
  • CS1704: 동일한 단순 이름을 가진 어셈블리를 이미 가져왔습니다. 참조 중 하나를 제거하거나 서명하여 나란히 사용하도록 설정합니다.
  • CS1714: 이 형식의 기본 클래스 또는 인터페이스를 확인할 수 없거나 잘못되었습니다.
  • CS1760: 여러 어셈블리가 동일한 메타데이터를 참조하지만 하나만 연결된 참조(/link 옵션을 사용하여 지정됨)입니다. 참조 중 하나를 제거하는 것이 좋습니다.
  • CS7008: 어셈블리 이름은 예약되어 있으며 대화형 세션에서 참조로 사용할 수 없습니다.
  • CS7068: 이 어셈블리에 정의된 형식 클레임에 대한 참조이지만 원본 또는 추가된 모듈에서는 정의되지 않습니다.
  • CS7069: 다른 어셈블리에 정의된 형식 클레임에 대한 참조이지만 찾을 수 없습니다.
  • CS7071: 어셈블리 참조가 잘못되었으며 확인할 수 없습니다.
  • CS7079: 형식은 추가되지 않은 모듈에 정의됩니다. 모듈을 추가해야 합니다.
  • CS8090: 참조된 어셈블리에 오류가 있습니다.
  • CS8203: 어셈블리 이름이 잘못되었습니다.
  • CS9286: 형식에 정의가 없고 수신기 형식에 대한 액세스 가능한 확장 멤버를 찾을 수 없습니다(using 지시문 또는 어셈블리 참조가 누락되었나요?)

또한 다음 경고는 이 문서에서 다룹니다.

  • CS1683: 'Type Name' 형식에 대한 참조는 이 어셈블리에 정의되어 있지만 원본 또는 추가된 모듈에서는 정의되지 않습니다.

누락된 참조

다음 오류 및 경고는 어셈블리 참조가 누락되었음을 나타냅니다.

  • CS0012: 'type' 형식은 참조되지 않는 어셈블리에 정의됩니다. 어셈블리 'assembly'에 대한 참조를 추가해야 합니다.
  • CS0234: 형식 또는 네임스페이스 이름이 네임스페이스에 없습니다(어셈블리 참조가 누락되었나요?)
  • CS0246: 형식 또는 네임스페이스 이름을 찾을 수 없습니다(using 지시문 또는 어셈블리 참조가 누락되었나요?)
  • CS9286: 형식에 정의가 없고 수신기 형식에 대한 액세스 가능한 확장 멤버를 찾을 수 없습니다(using 지시문 또는 어셈블리 참조가 누락되었나요?)

이러한 컴파일러 오류는 코드에서 다음 문제 중 하나를 나타냅니다.

  • 프로젝트는 필요한 어셈블리를 참조하지 않습니다. 이 오류를 해결하려면 필요한 어셈블리에 대한 참조를 추가합니다.
  • 형식의 이름을 잘못 입력했습니다. 형식의 이름을 확인합니다.
  • System.Type 대신 typeof 연산자나 is 연산자에서 기대된 이름 자리에 변수 이름을 사용했습니다.
  • 형식이 전역 네임스페이스에 없을 때 전역 범위 연산자(::) 를 사용했습니다.
  • 확장 멤버에 액세스하고 있으며 네임스페이스가 지시문에 using 지정되지 않았거나 확장이 포함된 어셈블리를 참조하지 않습니다.

어셈블리가 참조되는 것으로 표시되는 경우

어셈블리가 프로젝트에서 참조되는 것처럼 보이지만 여전히 CS0012가 표시되는 경우 다음 문제 해결 단계를 시도합니다.

  • 패키지 복원: 특히 NuGet 패키지를 설치하거나 제거한 후 모든 패키지 참조가 제대로 확인되도록 실행 dotnet restore 합니다.

  • NuGet 패키지 캐시를 지우고 복원합니다.

    dotnet nuget locals all --clear
    dotnet restore
    
  • 버전 충돌 확인: 참조된 모든 어셈블리가 호환되는 버전을 사용하는지 확인합니다. 빌드 출력에서 바인딩 리디렉션 경고를 찾습니다.

  • 솔루션을 정리하고 다시 빌드하여 부실 참조가 유지되지 않도록 합니다.

    dotnet clean
    dotnet build
    
  • 패키지 무결성 확인: 패키지 작업 후 오류가 발생한 경우 패키지를 제거하고 다시 설치하여 패키지가 올바르게 설치되었는지 확인합니다.

    dotnet remove package [PackageName]
    dotnet add package [PackageName]
    

형식 전달

  • CS1068: 전역 네임스페이스에서 형식 이름을 찾을 수 없습니다. 이 형식은 다른 어셈블리로 전달되었습니다. 해당 어셈블리에 대한 참조를 추가하는 것이 좋습니다.
  • CS1069: 네임스페이스에서 형식 이름을 찾을 수 없습니다. 이 형식은 다른 어셈블리로 전달되었습니다. 해당 어셈블리에 대한 참조를 추가하는 것이 좋습니다.
  • CS1070: 형식 이름을 찾을 수 없습니다. 이 형식은 다른 어셈블리로 전달되었습니다. 해당 어셈블리에 대한 참조를 추가하는 것이 좋습니다.

이러한 오류는 다른 어셈블리에 전달된 형식을 참조하는 오류를 나타냅니다. 이러한 오류를 해결하려면 오류 메시지에 표시된 어셈블리에 대한 참조를 추가합니다.

중복 참조

다음 오류는 중복 어셈블리 참조를 나타냅니다.

  • CS1704: 동일한 단순 이름을 가진 어셈블리를 이미 가져왔습니다. 참조 중 하나를 제거하거나 서명하여 나란히 사용하도록 설정합니다.
  • CS1760: 여러 어셈블리가 동일한 메타데이터를 참조하지만 하나만 연결된 참조(/link 옵션을 사용하여 지정됨)입니다. 참조 중 하나를 제거하는 것이 좋습니다.

이러한 오류를 해결하려면 참조 중 하나를 제거하거나 중복을 해결해야 합니다. 중복 원인은 다음과 같습니다.

  • 서명되지 않은 여러 어셈블리의 이름은 같습니다.
  • 프로젝트는 동일한 어셈블리의 여러 버전을 참조합니다.

어셈블리 참조가 잘못되었습니다.

다음 오류는 어셈블리 참조가 잘못되었음을 나타냅니다.

  • CS7008: 어셈블리 이름은 예약되어 있으며 대화형 세션에서 참조로 사용할 수 없습니다.
  • CS7069: 다른 어셈블리에 정의된 형식 클레임에 대한 참조이지만 찾을 수 없습니다.
  • CS7071: 어셈블리 참조가 잘못되었으며 확인할 수 없습니다.
  • CS7079: 형식은 추가되지 않은 모듈에 정의됩니다. 모듈을 추가해야 합니다.
  • CS8090: 참조된 어셈블리에 오류가 있습니다.
  • CS8203: 어셈블리 이름이 잘못되었습니다.

다음 경고는 잘못된 참조 어셈블리도 나타냅니다.

  • CS1683: 'Type Name' 형식에 대한 참조는 이 어셈블리에 정의되어 있지만 원본 또는 추가된 모듈에서는 정의되지 않습니다.

어셈블리 이름의 철자가 올바른지 확인합니다. 참조된 어셈블리 파일이 잘못되었을 수 있습니다.