У меня есть API MyApi, который используется приложением MyApplication.
MyApi имеет несколько библиотек, предназначенных для клиентского профиля .NET 4.0. Например:
- MyApi.Core
- MyApi.Domain
- MyApi.Providers
(и еще немного)
Для простоты развертывания это ILMerged в
Все библиотеки MyApis имеют сильные имена.
Все проекты в MyApplication имеют ссылку MyApi.ClientProfile.
Сейчас я добавляю некоторые веб-функции в MyApi, поэтому я добавил dll MyApi.Web, который предназначен для расширенного профиля .NET 4.0. MyApi.Web ссылается на MyApi.Core и MyApi.Domain (а также на dll System.Web).
Теперь существует также проект MyApplication.Web. Он ссылается на некоторые другие проекты в MyApplication (у которых есть ссылки на MyApi.ClientProfile dll). Проект MyApplication.Web должен ссылаться на MyApi.Web dll.
Как я могу это сделать?
Если я добавлю ссылки на MyApi.Core и MyApi.Domain из MyApplication.Web, то для MyApplication.Web будут типы, существующие в нескольких сборках.
Если я не добавлю ссылки на MyApi.Core и MyApi.Domain из MyApplication.Web, MyApi.Web не удастся загрузить, поскольку не может найти MyApi.Core или MyApi.Domain (потому что только MyApi.ClientProfile настоящее время).
Я не могу обработать событие разрешения сборки и перенаправить запросы для MyApi.Core / MyApi.Domain в MyApi.ClientProfile, поскольку все сборки MyApi имеют строгое имя, и это приведет к сбою.
Я не могу объединить MyApi.Web с MyApi.ClientProfile, поскольку MyApi.ClientProfile должен поддерживаться для клиентского профиля .NET 4.0 (а MyApi.Web содержит ссылки на System.Web и т. Д.).
Если я изменю MyApi.Web на ссылку MyApi.ClientProfile, это должно работать в этом случае, но не идеально, поскольку не будет работать для другого приложения, ссылающегося непосредственно на MyApi.Core и MyApi.Domain.
Я не хочу заставлять MyApplication.Web указывать bypassTrustedAppStrongNames в своей конфигурации (хотя использование этого параметра каким-либо образом напрямую из MyApi.Web может быть приемлемым вариантом ....).
Итак, я застрял, думая о подходящем / элегантном решении этой проблемы.
Есть предложения?
Спасибо.