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

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

또한 이 문서에서는 다음과 같은 경고를 다룹니다.

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

누락된 참조

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

  • CS0012: 'type' 형식은 참조되지 않는 어셈블리에 정의됩니다. 어셈블리 'assembly'에 대한 참조를 추가해야 합니다.
  • CS0234: 형식 또는 네임스페이스 이름이 네임스페이스에 없습니다(어셈블리 참조가 누락되었나요?)
  • CS0246: 형식 또는 네임스페이스 이름을 찾을 수 없습니다(using 지시문 또는 어셈블리 참조가 누락되었나요?)
  • CS1714: 이 형식의 기본 클래스 또는 인터페이스를 확인할 수 없거나 잘못되었습니다.
  • 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: 형식 이름을 찾을 수 없습니다. 이 형식은 다른 어셈블리로 전달되었습니다. 해당 어셈블리에 대한 참조를 추가하는 것이 좋습니다.
  • CS8206: 어셈블리 'assembly name'의 모듈 'module name'이 형식 'type name'을(를) 여러 어셈블리('first assembly name' 및 'second assembly name')로 전달하고 있습니다.

CS1068, CS1069 및 CS1070은 다른 어셈블리로 전달된 형식을 참조하는 오류를 나타냅니다. 오류 메시지에 표시된 어셈블리에 대한 참조를 추가합니다.

CS8206은 참조된 어셈블리 또는 모듈에서 충돌하는 형식 전달자 메타데이터를 나타냅니다. 동일한 형식이 둘 이상의 대상 어셈블리로 전달됩니다. 형식을 하나의 대상으로 전달하는 수정되거나 다시 빌드된 종속성을 사용합니다. 패키지 및 어셈블리 버전이 일관된지 확인하거나 충돌하는 메타데이터를 도입하는 참조를 제거합니다. 로컬 형식 선언에 대한 원본 별칭 또는 관련 없는 변경 내용은 참조된 메타데이터를 수정하지 않습니다.

중복 참조

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

  • CS1704: 동일한 단순 이름을 가진 어셈블리를 이미 가져왔습니다. 참조 중 하나를 제거하거나 서명하여 나란히 사용하도록 설정합니다.
  • CS1760: 여러 어셈블리가 동일한 메타데이터를 참조하지만 하나만 연결된 참조(/link 옵션을 사용하여 지정됨)입니다. 참조 중 하나를 제거하는 것이 좋습니다.
  • CS8356: 미리 정의된 형식 'type name'은 참조된 여러 어셈블리에서 선언됩니다. '첫 번째 어셈블리 이름' 및 '두 번째 어셈블리 이름'

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

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

CS8356의 경우 미리 정의된 동일한 런타임 형식을 정의하는 중복되거나 호환되지 않는 참조를 제거하거나 바꿉니다. 프로젝트가 하나의 일관된 프레임워크 및 참조 어셈블리 집합을 대상으로 지정하는지 확인합니다. 미리 정의된 형식의 다른 원본 정의를 추가하지 마세요.

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

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

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

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

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

어셈블리 이름을 올바르게 입력했는지 확인합니다. 참조된 어셈블리 파일이 잘못되었을 수 있습니다.