2012-06-07 7 views
4

Unity 응용 프로그램 블록을 사용할 때 예기치 않은 동작을 알아 냈습니다. 프로젝트 시작으로 프로젝트 A가 있습니다.Unity가 어셈블리 참조를 필요로하는 이유

프로젝트 A는

프로젝트 A가 차례로이 클래스에 대한 참조를 해결하기 위해 유니티를 사용하여 프로젝트 B에 정의 된 클래스에 대한 참조를 해결하기 위해 단결을 사용하는 프로젝트 C.에 대한 프로젝트 참조가 B를 프로젝트에 프로젝트 참조가

따라서 부터 공통 프로젝트에 정의 된 인터페이스 만 사용하고 Unity를 사용하여 구체적인 참조를 해결하기 때문에 Project B 또는 Project C에 대한 프로젝트/어셈블리 참조를 Project에 추가 할 필요가 없습니다..

하지만이 경우 Unity는 참조를 확인할 수 없습니다. 반면에 두 프로젝트에 대한 참조를 추가하면 문제가 없습니다. 필요한 이유는 무엇입니까? 이 주위에 어떤 방법이 있습니까?

Unity가 컨텍스트에 있어야하며 이러한 어셈블리의 유형을 생성하기 위해로드해야하기 때문에이게 있습니까? 여하튼이 느낌이 옳지 않습니다. 아무도이 beahvior 이해에 나를 도울 수 있습니다.

+0

도움이 되나요? 모 놀리 식 표현에 대해 유감입니다. – koder

답변

1

Unity 어셈블리의 코드는 등록한 구체적인 클래스를 해결할 수 있어야합니다. 즉, 구체적인 클래스가있는 어셈블리에 액세스해야합니다. 즉, Unity 어셈블리와 동일한 출력 디렉토리에 있거나 GAC에서이를 찾을 수 있어야합니다.

3

코드에 종속성을 등록한 경우 이러한 종속성 (인터페이스 또는 콘크리트 클래스)이 정의 된 어셈블리를 참조해야합니다. XML에서 매핑을 정의하면 참조가 필요 없지만 Unity가 런타임에 어셈블리를 찾을 수 있는지 확인해야합니다. 따라서 GAC 또는 응용 프로그램 폴더에 넣어야합니다.

+0

예, 프로젝트 참조없이 깨끗한 빌드를하면 프로젝트 B와 프로젝트 C조차도 빌드되지 않습니다. 솔루션을 빌드하려면 프로젝트 B와 C가 빌드되었지만 이진 파일은 프로젝트 A의 응용 프로그램 폴더에 저장되지 않습니다. – Shiv

관련 문제