2009-04-10 6 views
3

내 프로젝트는 다른 어셈블리를 참조하는 어셈블리를 참조합니다 (X라고 함).왜 참조 어셈블리를 체인해야합니까?

프로젝트를 컴파일하려고 할 때 어셈블리 Y를 참조해야합니다. 왜 그럴까요?

유형 'DevExpress.XtraEditors.XtraForm'이 참조되지 않은 어셈블리 에 정의되어 있습니다 : I 어셈블리 X가 참조 줄에 다음과 같은 오류가 발생합니다. 'DevExpress.Utils.v9.1, 버전 = 9.1.2.0, 문화 = 중립, PublicKeyToken = b88d1754d700e49a'어셈블리에 대한 참조를 추가해야합니다.

DevExpress.XtraEditors.XtraForm

는 조립 Y.

이 왜입니까? 전에이 행동을 보지 못했습니다.

답변

6

이것은 항상 존재합니다. 어셈블리 Y에서 메서드/속성/멤버 등을 가져 오는 객체를 사용하는 경우에만 컴파일 타임에이 작업을 수행합니다.

왜 .NET은 어셈블리 X를 사용하여 얻을 수 있는지 적절한 기호 및 메타 데이터 정보.

+0

나는 항상 이런 식으로 생각하지 않습니다. 나는이 프로젝트를 .net1.1에서 .net3.5로 포팅했고이 문제가 나타났다. 당신이 말한 내용이 사실이라면 프로젝트 A는 어셈블리 B를 참조하는 어셈블리 B를 참조합니다. 프로젝트 A는 어셈블리 B, C 및 D를 참조해야합니다. 의미가 없습니다. – AngryHacker

2

모든 종속성에 대한 참조가없는 경우 컴파일러에서 프로젝트를 빌드하는 방법이 항상 문제가되었습니다.

응용 프로그램이 작동하려면 프로젝트에서 참조하는 어셈블리가 필요합니다. 이러한 어셈블리의 형식을 사용하고 있으며 응용 프로그램에서 빌드 할 수없는 형식을 사용하지 않습니다. 더 중요한 것은 이러한 유형이 없으면 애플리케이션을 실행할 수 없다는 것입니다.

이제 참조하는 모든 어셈블리가 어셈블리와 동일한 방식으로 작성되었으며 모든 참조 어셈블리가 있어야하며이를 고려해야합니다. 이렇게하면 성가신 일 수있는 연쇄 반응이 생성되지만 최종 결과는 응용 프로그램을 실행하고 나면 CLR이 응용 프로그램을 실행하는 데 필요한 모든 어셈블리를 갖게된다는 것입니다.

관련 문제