CS0246 형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요.
잘 사용하던 프로젝트인데 무슨 영문인지 갑자기 참조되는 네임스페이스 이름을 찾을 수 없다고 오류를 뱉어내기 시작했다. 지금도 어떤 원인으로 발생된 것인지 의문이긴 하지만 해결 방법을 적어보려고 한다.

CS0246 오류는 컴파일러가 참조로 하는 클래스를 인식하지 못할 때 발생한다. DLL이 있어도 올바르게 참조되지 않으면 이와 같은 CS0246 오류를 발생시킨다. 이 오류는 '형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요.' 라고 설명한다.
CS0246 오류 해결방법
우선, 가장 기본적인 부분을 체크해야 한다.
1. DLL이 프로젝트에 올바르게 참조되었는지 확인
- 참조하려는 DLL이 프로젝트에 참조되지 않았거나
- DLL이 있지만 참조 경로가 올바르지 않거나, 빌드 과정에서 복사되지 않는 경우를 확인해야 한다.
▶ 해결방법
- 솔루션 탐색기 > 참조에서 정의된 DLL이 목록에 있는지 확인하고 없으면 우클릭 하여 참조 추가 한다.
- DLL이 bin/Debug 또는 bin/Release 폴더에 복사되었는지 확인한다. 없으면 솔루션 탐색기 > DLL 파일 선택 > 속성 > 로컬 복사가 true로 되어 있는지 확인한다.
2. using 문이 올바르게 추가되었는지 확인
- using 문이 제대로 선언되지 않으면 컴파일러가 클래스를 찾을 수 없다.
- 해당 DLL 내부의 클래스에서 네임스페이스를 확인하고 올바르게 추가되었는지 확인한다.
3. 빌드 정리 후 다시 빌드
- Visual Studio가 기존 캐시된 파일을 참조하는 문제가 있을 수 있거나
- 이전 빌드에서 참조된 DLL이 올바르게 갱신되지 않았을 수 있다.
▶ 해결방법
- bin/ 또는 obj/ 폴더 삭제 후 다시 빌드
- 빌드 > 솔루션 정리(Clean Solution) > 다시 빌드(Rebuild Solution)
4. 네임스페이스가 충돌하는지 확인
- 같은 이름을 가진 다른 클래스가 프로젝트 내에 존재할 수 있거나
- 잘못된 어셈플리에서 클래스를 참조하고 있을 가능성이 있다.
▶ 해결방법
- 해당 클래스의 정의로 이동(F12) 하거나 파일 내 검색(Ctrl + Shift + F) 해서 정의된 네임스페이스를 확인하고 다르면 올바르게 수정한다.
여기 까지가 기본적인 체크 사항들이고, 마지막으로 확인해야 할 부분이 타겟 프레임워크 버전 확인이다.
5. 타겟 프레임워크 불일치 확인
- 참조한 DLL과 프로젝트의 .NET 프레임워크 버전이 다르면 참조 오류가 발생한다.
예를 들어, 참조된 DLL이 .NET Framework 4.0에서 빌드되었는데
현재 프로젝트가 .NET Framework 4.5.1이면 충돌이 발생하게 된다.
예전에는 충돌나지 않았는데 어느 순간부터 충돌이 나기 시작했다. 그래서 삽질이 더 있었던 것이다.
프로젝트 우클릭 > 속성 > 어플리케이션 탭 에서 대상 프레임워크 버전을 맞춰주면 된다.
댓글
이 글 공유하기
다른 글
-
Eclipse SVN ... is not under version control.
Eclipse SVN ... is not under version control.
2023.07.28 -
SVN already locked 해결 방법 how to unlock
SVN already locked 해결 방법 how to unlock
2021.07.27 -
[C#] FarPoint Spread 셀 자동 줄바꿈 Multiline, WordWrap
[C#] FarPoint Spread 셀 자동 줄바꿈 Multiline, WordWrap
2019.05.08 -
Apachectl stop (20014)Internal error: Error retrieving pid file logs/httpd.pid
Apachectl stop (20014)Internal error: Error retrieving pid file logs/httpd.pid
2017.09.21
댓글을 사용할 수 없습니다.