Tengo algunos complementos como archivos dll. Mi aplicación carga el dll y funciona bien. pero cuando trato de eliminar el complemento anterior y reemplazarlo con un nuevo complemento, no me permite hacerlo. como ha sido cargado por la aplicación. He descubierto que al usar appdomain podemos hacer eso. pero no puedo encontrar una solución en la que se use mef.Descarga de un archivo dll en mef
Necesito un código que se puede ejecutar en mef. A continuación está mi código que se usa para cargar complementos.
//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);
debe haber una solución a esto. Escuché que esto va a ser en el próximo lanzamiento de mef. no sé si es verdad o no –
@fhnaseer Nope - al menos no en nada mostrado públicamente hasta el momento. Esto está realmente fuera del caso de uso previsto para MEF, por lo que dudo que ocurra allí. La única forma admitida de eliminar un ensamblado en el CLR es descargar todo el AppDomain. MEF, al ser una biblioteca, no puede "solucionarlo". –
bien, entonces, ¿cuál es el significado de "AllowRecomposition = true" en ImportMany. Si lo escribo o no, el comportamiento es el mismo. –