Mam niektóre wtyczki jako pliki DLL. Moja aplikacja ładuje bibliotekę dll i działa dobrze. ale kiedy próbuję usunąć starą wtyczkę i zastąpić ją nową wtyczką, nie pozwala mi to zrobić. ponieważ został załadowany przez aplikację. Odkryłem, że używając aplikacji appdomain możemy to zrobić. ale nie jestem w stanie znaleźć rozwiązania, w którym stosowany jest mef.Rozładowywanie pliku dll w formacie MFC
Potrzebuję kodu, który można uruchomić na mef. Poniżej znajduje się mój kod służący do ładowania wtyczek.
//Creating an instance of aggregate catalog. It aggregates other catalogs
var aggregateCatalog = new AggregateCatalog();
//Build the directory path where the parts will be available
var directoryPath = "Path to plugins folder";
//Load parts from the available dlls in the specified path using the directory catalog
var directoryCatalog = new DirectoryCatalog(directoryPath, "*.dll");
//Add to the aggregate catalog
aggregateCatalog.Catalogs.Add(directoryCatalog);
//Crete the composition container
var container = new CompositionContainer(aggregateCatalog);
// Composable parts are created here i.e. the Import and Export components assembles here
container.ComposeParts(this);
nie powinno być rozwiązaniem tego. Słyszałem, że będzie to w następnym wydaniu. nie wiem, czy to prawda, czy nie. –
@fhnaseer Nope - przynajmniej nie w niczego publicznie pokazanego do tej pory. W rzeczywistości jest to poza zamierzonym przypadkiem użycia MEF, więc wątpię, że to się stanie. Jedynym obsługiwanym sposobem usuwania zespołu w CLR jest zwolnienie całego AppDomain. MEF, będąc biblioteką, nie może tego "obejść". –
co to jest znaczenie "AllowRecomposition = true" w ImportMany. Jeśli to piszę, zachowanie jest takie samo. –