В .NET каждый exe-файл или DLL-файл называется сборкой 1 . Поэтому, когда вы создаете каталог на основе «исполняемой сборки» и используете его в точке входа приложения, вы включаете только те части, которые определены в exe-проекте. Вы не получите никаких частей, определенных в DLL.
Попробуйте заменить это:
var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
этим:
var catalog = new AggregateCatalog(
new ComposablePartCatalog[]
{
new AssemblyCatalog(Assembly.GetExecutingAssembly()),
new DirectoryCatalog(".")
});
edit: Я только что обнаружил, что есть более простое решение:
var catalog = new DirectoryCatalog(".", "*");
( 1 ) Собственно, сборка может состоять из нескольких файлов, но это редко используется. Термин также используется для параллельного COM.