Jak uzyskać numer wersji każdej biblioteki DLL, która ma moje wtyczki MEF?

Mam kilka klas, które implementująIDessertPlugin. Znajdują się one w różnych bibliotekach DLL, których używam w MEF, aby wywołać ich wystąpienia, aby użyć ich jako funkcjonalności wtyczki w mojej aplikacji.

Chcę więc wyświetlić numer wersji bibliotek DLL, z których załadowałem wtyczki za pomocą MEF. Jedna lub więcej wtyczek jest zdefiniowanych w jednej lub wielu bibliotekach DLL, które ładuję do mojej aplikacji.

W tej chwili robię coś takiego:

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);

A to ładuje wtyczki w porządku z podkatalogu Plugins, w którym działa moja aplikacja.

Robię coś takiego

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

po prostu zwraca „System.ComponentModel.Composition, Version = 4.0.0.0, ...”

Chciałem wiedzieć, że mam wersję 1.0 CakePlugins.dll i wersję 1.1 IceCreamPlugins.dll. Same wtyczki nie mają atrybutu wersji o nich - chcę polegać na wersji DLL. Mam nadzieję, że to ma sens.

Nie zorientowałem się, które biblioteki DLL używam tam, abym mógł zadzwonićAssembly.GetName().Version na nich.

Pomysły?

Rozwiązanie:

Rozwiązanie mojego problemu było całkiem proste po skomponowaniu części.

Mój kod zarządzania wtyczkami ma taki wpis:

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

a gdy kompozycja części kontenera ma miejsce, mogę iterować przez moje wtyczki w ten sposób:

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

questionAnswers(2)

yourAnswerToTheQuestion