2010-01-06 3 views
4

다른 개발자가 만든 VB.Net 솔루션이 있고 해당 컴퓨터에서 컴파일하는 중입니다. 프로젝트 중 하나에서 다음 줄을 따라 뭔가를 말하면서 오류가 발생합니다 :vb.net 컴파일 오류 'abc'가 'xyz'네임 스페이스에 모호합니다.

Imyinterface은 네임 스페이스 anamespaceassembly에서 모호합니다.

내가 성공하지 시도

는 :

  • 제거하고
  • 이 같은 DLL을 위해 시스템을 검색 문제의 어셈블리를 부가 다시 명백한 오류를 확인하기 위해 참고 문헌을 검토
  • 원본 deve의 src (.v 소스 제어 버전)를 컴파일하려고 시도했습니다.
  • 은 ildasm.exe

나는 보통 C#으로 코드를 작성하고 VB.Net에만 국한되지는 않지만이 오류를 보지 못했습니다.하지만 참조를 추가/표시하는 UI는 약간 다르기 때문에 VB라고 생각했습니다. Net은 참고 문헌과 다른 것을 할 수 있습니다.

다른 컴퓨터에서도 컴파일을 시도했는데 제대로 컴파일되었습니다. 그래서 나는 그것이 기계를 만들면서 뭔가 있다고 가정하지만 나는 무엇을 확신하지 못합니다. 어떻게 든 프로젝트에 의해 참조되지 않는 다른 충돌하는 어셈블리는 가능합니까 ??

아이디어가 있으십니까?

+2

보기 + 개체 브라우저에서 "Imyinterface"를 입력하십시오. 무엇이 나타 납니까? –

답변

2

이 오류의 원인은 몇 가지가있을 수 있습니다. VB에서는 클래스 스펙없이 C#에서 익숙해 진 이름을 더 많이 사용할 수 있다는 것을 알고 있어야합니다. 또한 VB에서는 대소 문자를 구분하지 않으므로 충돌 가능성을 더 많이 나타낼 수 있습니다. Imports 성명에서 이름을 변경 :

Imports IM = yourAssembly.Imyinterface 

그런 다음 코드를 변경

비록 당신이 실제 충돌 문제를 찾을 수없는 경우에, 당신은 당신이 C#으로하는 것과 같은 방법으로이 문제를 해결할 수 있습니다 Imyinterface의 사용은 IM으로 바뀝니다.

참고 : 오류가 특정 줄을 가리 키지 않으면 충돌이 손이 아닌 것일 수 있습니다. 일반적으로 완전한 Clean Solution 및 Rebuild가 많은 도움이되지만 때로는 오작동하는 파일 (즉, 다른 오류)으로 인해이 오류가 명확한 소스없이 먼저 팝업됩니다. 최근 변경 사항이 작동 한 곳으로 롤백하십시오.

다른 컴퓨터에서도 작동한다고합니다. 컴퓨터에 MS Visual Studio 또는 .NET의 다른 버전이 설치되어있을 가능성이 있습니다. 정확한 버전을 확인하고 비교하십시오.

0

답변 해 주셔서 감사합니다. 나는 각각을 시도했지만 여전히 문제가있었습니다.

원래 질문에서 버린 정보 중 하나는 VB.net 프로젝트가 VB6 프로젝트에서 업그레이드된다는 것입니다. 당시 나는 그것이 적절하다고 생각하지 않았다.

빌드 머신을 조사한 후에도 VB6 프로젝트를 빌드하는 데 사용되었습니다. 그래서 'reg32/u'를 vb6 dll에서 실행 시켰고 VB.net 문제를 해결하는 것처럼 보였습니다.

VB6 DLL을 참조하지 않아서이 문제가 해결되지 않은 이유는 무엇입니까? 레지스트리에서 모호한 항목과 관련이있는 것으로 추측됩니다. vb.net 프로젝트를 혼란스럽게합니다.

2

두 버전의 동일한 참조 (예 : Microsoft.ReportViewer.Webforms 버전 10.0.0.0 및 Microsoft.ReportViewer.Webforms 8.0.0.0)가있는 경우 참조를 확인하십시오.이 오류가 발생합니다. 가장 오래된 것을 삭제하면 좋을 것입니다. 나는 항상 이것을 나 자신에게한다.

1

나는 똑같은 문제에 직면했다. 내 응용 프로그램을 vb6에서 vb.net으로 업그레이드했으며 빌드 구성을 DEBUG에서 RELEASE로 변경하면 AMBIGUOUS 오류가 발생합니다. 솔루션 탐색기에서 dulicate references 폴더를 찾았습니다. 나는 그 중복 된 주장을 제거하고 성공적으로 빌드했다. 나는 그것이 다른 사람들을 도울 수 있기를 희망한다.