2011-07-05 6 views
2

컴파일 한 후 내 솔루션에 다음과 같은 경고가 표시됩니다. enter image description hereVisual Studio C# 참조 경고

경고를 두 번 클릭하면 나는 그것이 무엇인지 모르는 질문을 팝업합니다. enter image description here

VS에 대해 이야기하는 것을 이해한다면 공유하십시오.

답변

5

솔루션의 다른 프로젝트에서 약간 다른 버전의 종속성을 참조한 것처럼 보입니다. 이것이 의미하는 바는 동일한 어셈블리의 서로 다른 버전의 유형이 다른 것으로 간주되므로 종속성에 유형이있는 참조를 전달하면 프로젝트를 실행하고 실행할 때 예기치 않은 오류가 발생할 수 있다는 것입니다.

예.

Project1의 버전 1.0 유형이 SomeAssembly.dll에 정의 SomeType의 기준을 통과하는 2 개 시도를 Project2의 종속성 SomeAssembly.dll 사용하지만 버전 1.1 에서 Project2의 프로젝트에서 종속성

코드에서 Project1를 갖는다 의존성 SomeAssembly.dll 사용 해당 코드에서 프로젝트 1의 코드로 변환합니다. 다른 버전의 어셈블리에서 가져온 것으로 형식을 인식하지 못하기 때문에 프로젝트 1에서 오류가 발생합니다.

이 유형의 대부분의 오류는 컴파일러에서 catch 할 수 있기 때문에 문제가 더 미묘 할 수 있지만 복잡한 종속성이 있거나 종속성 삽입을 사용하면 컴파일러가 반드시 이와 같은 상황을 감지하지 못할 수 있습니다.

Visual Studio는 종속성을 모두 특정 버전으로 리디렉션하는 대안을 효과적으로 제공 할 것입니다. IMHO 수동으로 직접 고칠 수 있다면 수정하지 않는 것이 좋습니다.

솔루션을 검토하고 모든 참조를 확인하여 버전이 모두 일치하는지 확인하는 것이 훨씬 낫습니다. 이 작업을 제대로 수행하려면 참조를 제거하고 다시 추가해야 할 수도 있지만, 지금 수행하면 장기적으로 예기치 않은 문제가 발생하지 않습니다.

+0

거의 답을 수락 한 것으로 선택하는 데 동의합니다. 같은 어셈블리의 서로 다른 버전의 타입이 다른 것으로 간주 될 때 의존성에 타입이있는 참조를 전달하면 '간단한'예제를 알려주시겠습니까? 고맙습니다! –

관련 문제