У меня вопрос о составе MEF.В моей среде разработки я могу использовать этот код для импорта деталей.
var dirCatalog = new DirectoryCatalog(path, "MyCompany.*.dll");
var container = new CompositionContainer(dirCatalog);
container.SatisfyImportsOnce(this);
Однако при развертывании на тестовый сервер, который не работает.Единственный способ, как я нашел, чтобы заставить его работать правильно, это явно загрузить dll, которые имеют экспорт, как это:
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.Services.AppServer.Modelling.dll"))));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.IFS.AppServer.Dispatchers.dll"))));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.Services.AppServer.Service.dll"))));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.IFS.Common.InstrumentService.Proxy.dll"))));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.LoadFrom(Path.Combine(path, "MyCompany.IFS.Common.InstrumentPropertyService.Proxy.dll"))));
var container = new CompositionContainer(catalog);
container.SatisfyImportsOnce(this);
Очевидно, я действительно не хочу явно загружать каждую dll, которая имеет экспортв этом;такого рода поражение цели MEF.Но на данный момент это единственное, что я обнаружил, что работает.
Этот код находится в фабрике хостов пользовательских служб, используемой для запуска службы WCF, размещенной в IIS.Не уверен, что это имеет значение ...
TIA, Грег