у меня есть C# WebAPI приложение, которое имеет следующую структуру Visual Studio C# решения многих проектов (зависимости)
Решение имеет много проектов, ядро проекта, который является фактическим проектом WebAPI и более одного отдельных проектов которые используются для связи с внешними системами. Мой проект использует зависимость Инъекция: В базовом проекте, возможно, в его веб-конфигурации определена внешняя система. Когда различные зависимости регистрируются существует код, как этот
string ExternalSystem = ConfigurationManager.AppSettings["ExternalService"];
switch(ExternalSystem)
{
case "ExtA":
this.RegisterType<ExtA.ExternalService>().As<IExternalService>().InstancePerRequest();
break;
case "ExtB":
this.RegisterType<ExtB.ExternalService>().As<IExternalService>().InstancePerRequest();
break;
default:
this.RegisterType<ExternalService>().As<IExternalService>().InstancePerRequest();
break;
}
Определение IExternalService находится в проекте ядра и каждый из Extrnal систем имеет собственную реализацию этого интерфейса. Таким образом, решение о том, какая из реализаций будет использоваться, определяется в файле веб-конфигурации в основном проекте. У этой реализации есть одна проблема. Когда я создаю свой релиз библиотеки DLL, я должен включать в себя все DLLS внешней системы (даже если они не используются), в противном случае строк кода, как этот
this.RegisterType<ExtA.ExternalService>().As<IExternalService>().InstancePerRequest();
не будет компилировать. Другими словами, мое приложение может быть использовано у клиента, который только взаимодействует с внешней системой A. В этой конфигурации я хочу включить только DLL из базовой DLL проекта и внешней системы. Если клиент использует B, тогда будет включен только B и т. Д. Возможно ли это?
Этот вопрос не ясен. Вы говорите об установщиках? – Liam
Нет, это приложение для веб-приложений. Установщиков нет. Проблема в том, что мне нужно загрузить мое приложение на многие серверы для разных клиентов. Клиент A использует внешнюю систему A, клиент B использует внешнюю систему B и так далее. Используя текущую архитектуру, я должен загрузить все DLL из всех внешних систем всем клиентам ... –
и почему это проблема? Поместите все dll на все серверы и управляйте конфигурацией. Я не вижу проблемы с тем, что у вас уже есть? – Liam