2 개의 프로젝트가 있는데 하나는 MVC 사이트이고 다른 하나는 클래스 라이브러리입니다. MVC 사이트는 클래스 라이브러리를 참조합니다.Castle.Windsor는 코드에서 어셈블리가 참조되지 않는 한 FromAssembly.InThisApplication을 사용하여 설치 프로그램을 실행하지 않습니다.
MVC 사이트 및 클래스 라이브러리에 IWindsorInstaller
구현이 있습니다. MVC 사이트에는 클래스 라이브러리에 정의 된 모든 클래스를 직접 참조하는 코드가 없으며 다른 곳에서 정의 된 모든 인터페이스 구현입니다. MVC의 사이트에서
var container = new Castle.Windsor.WindsorContainer();
container.Install(FromAssembly.InThisApplication());
이 일을 해요 시작합니다. 그러나 내가 이것을 할 경우
container.Install(FromAssembly.Containing<ClassFromTheClassLibrary>());
설치 프로그램이 두 번 호출됩니다. 캐슬은 다른 어셈블리에 대한 코드 내 참조를 InThisApplication
에서 받아 들여야합니다. 이 작업을 수행하여 문제를 해결할 수 있습니다.
container.Install(FromAssembly.This());
container.Install(FromAssembly.Containing<ClassFromTheClassLibrary>());
하지만 다른 어셈블리를 직접 참조하지 않아도됩니다.
업데이트는 네임 스페이스는 다음과 같습니다
- MVC 응용 프로그램이
- 클래스 라이브러리는 당신이 당신의 어셈블리 이름을 경우 작동합니다
코드에서 어셈블리에 대한 참조를 추가 할 때 왜 작동합니까? –
IWindsorInstaller를 찾을 어셈블리를 식별해야합니다. FromAssembly.Containing <>은 어셈블리를 찾는 또 다른 방법입니다. 조립품을 찾는 방법을 정의해야합니다. ZERO 코드 참조를 원한다면 dir & filename 패턴을 사용하면됩니다. –
두 어셈블리가 같은 이름의 첫 번째 부분을 가지고있을 때'FromThisApplication'이 작동하지 않아야합니까? –