Как получить номер версии каждой библиотеки DLL, в которой есть мои плагины MEF?

У меня есть несколько классов, которые реализуютIDessertPlugin, Они находятся в различных библиотеках DLL, которые я использую MEF, чтобы ускорить их экземпляры для использования в качестве подключаемого модуля в моем приложении.

Поэтому я хочу показать номер версии библиотек DLL, из которых я загружал плагины с использованием MEF. Один или несколько плагинов определены в одной или нескольких библиотеках DLL, которые я загружаю в свое приложение.

Прямо сейчас я делаю что-то вроде этого:

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

И это прекрасно загрузит плагины из подкаталога плагинов, где работает мое приложение.

Делать что-то вроде

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

просто возвращает & quot; System.ComponentModel.Composition, Version = 4.0.0.0, ... & quot;

Я надеялся узнать, что у меня установлена версия 1.0 файла CakePlugins.dll и версия 1.1 файла IceCreamPlugins.dll. Сами плагины не имеют атрибута версии о них - я хочу полагаться на версию DLL. Надеюсь, что это имеет смысл.

Я не понял, какие библиотеки DLL я там использую, чтобы я мог вызватьAssembly.GetName().Version на них.

Идеи?

Solution:

Итак, решение моей проблемы было довольно простым после того, как части были составлены.

Мой код управления плагином имеет следующую запись:

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

и после компоновки частей контейнера я мог бы перебирать свои плагины следующим образом:

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

Ответы на вопрос(2)

Ваш ответ на вопрос