다음을 통해 공유


컴파일러 경고(수준 1) CS1684

업데이트: 2007년 11월

오류 메시지

'Type Name' 형식에 대한 참조는 'Namespace'에 정의된 것으로 되어 있지만 찾을 수 없습니다.
Reference to type 'Type Name' claims it is defined in 'Namespace', but it could not be found

네임스페이스 내에서 다른 네임스페이스에 있다고 알려진 형식을 참조했지만 실제로는 다른 네임스페이스에 해당 형식이 없는 경우 이 오류가 발생합니다. mydll.dll 내에서 A 형식이 yourdll.dll에 있다고 했지만 실제로 yourdll.dll에 이 형식이 없는 경우를 예로 들 수 있습니다. 이 오류는 사용하고 있는 yourdll.dll의 버전이 너무 오래되고 A 형식이 아직 정의되지 않아 발생할 수 있습니다.

다음 샘플에서는 CS1684 경고가 발생하는 경우를 보여 줍니다.

예제

// CS1684_a.cs
// compile with: /target:library /keyfile:CS1684.key
public class A {
   public void Test() {}
}

public class C2 {}

// CS1684_b.cs
// compile with: /target:library /r:cs1684_a.dll
// post-build command: del /f CS1684_a.dll
using System;
public class Ref 
{
   public static A GetA() { return new A(); }
   public static C2 GetC() { return new C2(); }
}

이번 컴파일 작업에 C2 클래스를 정의하지 않도록 클래스 정의를 제외하고 첫 번째 모듈을 다시 컴파일합니다.

// CS1684_c.cs
// compile with: /target:library /keyfile:CS1684.key /out:CS1684_a.dll
public class A {
   public void Test() {}
}

이 모듈은 Ref 식별자를 사용하여 두 번째 모듈을 참조합니다. 그러나 두 번째 모듈에는 이전 단계에서 컴파일되어 더 이상 존재하지 않는 C2 클래스에 대한 참조가 포함되어 있으므로 이 모듈을 컴파일하면 CS1684 오류 메시지가 반환됩니다.

// CS1684_d.cs
// compile with: /reference:cs1684_a.dll /reference:cs1684_b.dll
// CS1684 expected
class Tester
{
   public static void Main()
   {
      Ref.GetA().Test();
   }
}