응용 프로그램 MyApplication에서 사용하는 api, MyApi가 있습니다..NET 어셈블리 바인딩
MyApi에는 .NET 4.0 클라이언트 프로파일을 대상으로하는 여러 dll이 있습니다. 예를 들어
- MyApi.Core
- MyApi.Domain
- MyApi.Providers
(좀 더) 전개 편의상
, 이들은
로되어 ILMerged- MyApi.ClientProfile
모든 MyApis dll의 이름이 강력합니다.
MyApplication의 모든 프로젝트는 MyApi.ClientProfile을 참조합니다.
이제 일부 웹 기능을 MyApi에 추가하고 있으므로 .NET 4.0 Extended Profile을 대상으로하는 dll MyApi.Web을 추가했습니다. MyApi.Web은 MyApi.Core 및 MyApi.Domain (System.Web dlls뿐 아니라)을 참조합니다.
이제 MyApplication.Web 프로젝트도 있습니다. MyApplication (MyApi.ClientProfile dll에 대한 참조가있는)의 다른 프로젝트를 참조합니다. MyApplication.Web 프로젝트는 MyApi.Web dll을 참조해야합니다.
어떻게하면됩니까?
MyApplication.Web에서 MyApi.Core 및 MyApi.Domain에 대한 참조를 추가하면 MyApplication.Web에 대한 여러 어셈블리에 존재하는 유형이 있습니다. 내가 MyApplication.Web에서 MyApi.Core 및 MyApi.Domain에 대한 참조를 추가하지 않으면 그것은 (MyApi.Core 또는 MyApi.Domain을 찾을 수 없기 때문에
, MyApi.Web로드하는 데 실패 때문에에만 MyApi.ClientProfile 존재 함).
어셈블리 해결 이벤트를 처리 할 수없고 MyApi.Core/MyApi.Domain에 대한 요청을 MyApi.ClientProfile로 리디렉션합니다. MyApi 어셈블리는 모두 강력한 이름을 가지며 실패하게됩니다.
MyApi.ClientProfile은 MyApi.ClientProfile에 병합 할 수 없습니다. MyApi.ClientProfile은 .NET 4.0 Client Profile에서 지원되어야하고 MyApi.Web은 System.Web 등을 참조해야하기 때문입니다.
MyApi.ClientProfile을 참조하도록 MyApi.Web을 변경하면이 경우에 적합하지만 이상적인 것은 아닙니다. 다른 응용 프로그램에서 MyApi.Core 및 MyApi.Domain을 직접 참조하기 때문에 작동하지 않기 때문입니다.
MyApplication.Web이 해당 구성에서 bypassTrustedAppStrongNames를 지정하도록하고 싶지 않습니다. (MyApi.Web에서이 설정을 어떻게 든 사용할 수있는 옵션이 될 수 있습니다 ...).
그래서이 문제에 대한 적절한/우아한 해결책을 생각해 보았습니다.
제안 사항?
감사합니다.