2010-01-18 6 views
2

안녕하세요 여러분, mscorlib 1.0.5와 mscorlib 2.0을 모두 참조해야하는 이유로 ASP.NET 웹 사이트 프로젝트가 있는데 그 이유를 알 수 없습니다.mscorlib에 대한 프로젝트 참조 결정

나는 NDepend를 사용하여 모든 참조 된 DLL을 분석했으며, 모두 mscorlib 2.0 만 참조하는 것처럼 보입니다. 몇 가지 웹 참조가 있는데, 왜 그것이 1.0 dll에 대한 추가 참조를 만들지 상상할 수 없습니다.

누구나 내가이 추가 참조 정보를 얻는 이유가 무엇인지 또는 정보를 찾는 데 사용할 수있는 정보가 있습니까? NDepend는 훌륭하지만 그냥 돌아와서 "새로운 버전을 사용하여 2 개의 참조를 찾았습니다"라고 말하면 추가 참조가있는 이유를 알 수 없습니다.

답변

2

내가 가장 좋은 건 ILDASM을 사용하는이 시점에서 생각합니다. 어셈블리에서 ildasm을 사용하면 "Manifest"라는 노드가 나타납니다. 해당 노드를 두 번 클릭하면 참조 된 버전 번호를 포함하여 어셈블리 참조의 IL 표현이 덤프됩니다. 1.0 버전을 참조하는 DLL을 찾을 때까지 모든 DLL에 대해이 작업을 반복하십시오.

EDIT

다른 가능한 해결책은 Assembly 값을 열거하는 것 및 GetReferencedAssemblies 방법이 연관된. 해당 버전 멤버가있는 AssemblyName 값의 배열을 반환합니다. 실제로드 된 것보다 참조 된 어셈블리의 실제 버전이 있어야합니다.

이 문제에 대해서는 100 % 확신 할 수 없으며 지금 당장 테스트 할 수있는 편리한 방법이 없습니다.

+0

대답이 두려웠습니다 :) 저보다 몇 시간 앞서 재미있게 보입니다 ... – jvenema

+0

감사합니다. Jared, 그냥 감사합니다. 그 (것)들을 수동으로 검사하는 것은 나가 생각한보다는 빨리 갔다, 나는 범인을 찾아 냈다. – jvenema

0

참조를 제거하고 다시 컴파일 해보십시오. 그게 무엇이든간에 오래된 버전에 달려 있다는 것을 알려줄 것입니다.

+0

불행히도 mscorlib에 대한 참조를 직접 추가/제거 할 수는 없습니다 ... – jvenema

0

잘못된 참조가 web.config 파일에있을 수 있습니다.

친절,

관련 문제