'Type Name' 형식에 대한 참조는 'Namespace'에 정의된 것으로 되어 있지만 찾을 수 없습니다.
이 오류는 두 번째 네임스페이스 안에 있다고 하는데 실제로는 없는 형식을 참조하는 하나의 네임스페이스 안의 참조로 인해 발생할 수 있습니다. 예를 들어 mydll.dll에서는 A 형식이 yourdll.dll 안에 있다고 하는데 그러한 형식이 yourdll.dll 안에 없습니다. 이 오류가 발생하는 한 가지 가능한 원인은 사용 중인 yourdll.dll의 버전이 너무 오래되고 A 가 아직 정의되지 않았기 때문입니다.
다음 샘플에서는 CS1684를 생성합니다.
예제 1
// CS1684_a.cs
// compile with: /target:library /keyfile:CS1684.key
public class A {
public void Test() {}
}
public class C2 {}
예제 2
// 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(); }
}
예 3
이제 첫 번째 어셈블리를 다시 빌드하고 다시 컴파일할 때 정의되지 않도록 클래스 C2의 정의를 제외합니다.
// CS1684_c.cs
// compile with: /target:library /keyfile:CS1684.key /out:CS1684_a.dll
public class A {
public void Test() {}
}
예시 4
이 모듈은 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();
}
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET