Вы можете сделать это с помощью DirectoryCatalog класса , который сканирует все сборки DLL в папке. Он также имеет метод Refre sh , который будет повторно сканировать каталог и обновлять sh контейнер, если найдены изменения. Это вызовет событие ExportsChanged в контейнере, которое также содержит информацию о произошедших изменениях.
Вот очень простой c пример, демонстрирующий, как это сделать:
class Program
{
static void Main(string[] args)
{
DirectoryCatalog catalog = new DirectoryCatalog("plugins", "*.dll");
CompositionContainer container = new CompositionContainer(catalog);
container.ExportsChanged += Container_ExportsChanged;
Console.WriteLine("Copy new plugins and press any key to refresh them.");
Console.ReadKey();
catalog.Refresh();
Console.ReadLine();
}
private static void Container_ExportsChanged(object sender, ExportsChangeEventArgs e)
{
Console.Write("Added Exports: ");
Console.WriteLine(string.Join(", ", e.AddedExports));
}
}