2011-08-30 2 views
3

나는 각각 공유 코어 DLL을 사용하는 두 개의 완전히 독립적 인 웹 응용 프로그램을 가지고 있습니다. 배포 및 버전 관리 목적으로 두 응용 프로그램 모두에서 "코어"dll의 단일 복사본을 배포 할 수 있기를 바랍니다. 또한 필요한 경우 배포시 핵심 DLL을 옵션으로 대체 할 수있는 기능을 지원할 수 있기를 바랍니다. 즉, app1은 코어 dll 버전 1을 사용할 수 있고 app2는 코어 dll 버전 2를 사용할 수 있습니다. 이러한 기능을 지원하기 위해 경로별로 단일 DLL의 구현 클래스를 지원하는 DI 컨테이너가 있습니까? IOW, app1은 c : \ corev1 \ core.dll의 구현 클래스를 가져오고 app2는 간단한 예제로 c : \ corev2 \ core.dll의 구현 클래스를 가져옵니다. 모든 응용 프로그램이 독립적 인 배포 전략으로 인해 core.dll에 대한 직접적인 참조는 피할 필요가 있습니다.DI 외부 DLL 사용

답변

2

DI 또는 컨테이너가 필요하지 않습니다. Assembly Versioning은 .NET에서 즉시 지원됩니다.

각 응용 프로그램의 나머지 응용 프로그램 바이너리와 함께 core.dll을 배포하고 서로 독립적으로 버전을 배포하면됩니다.

+0

이것은 좋은 제안이며 내가 지나치게 단순화 된 시나리오에서 유효합니다. MEF가이 문제를 해결했으며 문제의 주로서 DLL에 대한 직접적인 참조를 피할 수있었습니다. 우리의 개발 프로세스와 현재의 CI 프로세스는 약간의 작업이 필요하며 결국에는 단순화 된 접근법을 사용하기 위해 방향으로 나아갔습니다. 그러나 지금 당장은 불가능합니다. – codeEmitter

3

DI가 반드시 필요하지는 않지만 DI가 아닌 플러그 가능을 원합니다. MEF을보십시오.