¿Cómo obtengo el número de versión de cada DLL que tiene mis complementos MEF?

Tengo una serie de clases que implementanIDessertPlugin. Estos se encuentran en varios archivos DLL que utilizo MEF para activar instancias de ellos para usarlos como funcionalidad de complemento en mi aplicación.

Entonces, lo que quiero hacer es mostrar el número de versión de las DLL desde las que he cargado los complementos utilizando MEF. Uno o más complementos están definidos en uno o más archivos DLL que cargo en mi aplicación.

Ahora mismo hago algo así:

var catalog = new AggregateCatalog();
catalog.Catalogs.Add(
   new DirectoryCatalog(Path.Combine(
      Path.GetDirectoryName(Assembly.GetExecutingAssembly().location), "Plugins")));

var container = new CompositionContainer(catalog);

container.ComposeParts(this);

Y eso cargará los complementos desde el subdirectorio de Complementos donde se ejecuta mi aplicación.

Haciendo algo como

catalog.Catalogs.First().Parts.First().GetType().Assembly.FullName

simplemente devuelve "System.ComponentModel.Composition, Version = 4.0.0.0, ..."

Lo que esperaba poder saber era que tengo la versión 1.0 de CakePlugins.dll y la versión 1.1 de IceCreamPlugins.dll. Los complementos en sí mismos no tienen un atributo de versión sobre ellos; quiero confiar en la versión de la DLL. Espero que tenga sentido.

No me he dado cuenta de qué DLL estoy usando allí para poder llamarAssembly.GetName().Version en ellos.

Ideas?

Solución:

Por lo tanto, la solución a mi problema fue bastante sencilla una vez que se compusieron las partes.

Mi código de administración de plugins tiene una entrada como esta:

[ImportMany(typeof(IDessertPlugin)]
private IEnumerable<IDessertPluing> dessertPlugins;

y una vez que la composición de las partes del contenedor haya tenido lugar, podría repetir mis plug-ins así:

foreach(var plugin in dessertPlugins)
{
   Console.WriteLine(Assembly.GetAssembly(plugin.GetType()).GetName().Version.ToString());
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta