Поздняя загрузка dll плагина .net

У меня есть приложение С# .Net 2.0CF, в котором я хотел бы загрузить DLL-плагин .NET во время выполнения.

Насколько я понимаю, я должен иметь возможность использовать System.Reflection.Assembly.LoadFrom() для загрузки DLL в сборку. Затем используйте Assembly.GetTypes(), чтобы получить список типов в плагине, чтобы сопоставить их с моими ожидаемыми интерфейсами.

Проблема в том, что когда я звоню GetTypes(), я получаю System.TypeLoadException(). Основываясь на сообщении об исключении, я предполагаю, что это связано с тем, что этот конкретный плагин ссылается на какую-то другую сборку, о которой эта программа ничего не знает. Но в этом и смысл того, что это плагин! Я не хочу, чтобы мое приложение что-либо знало об этих других сборках.

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

Спасибо, PaulH


person PaulH    schedule 05.03.2010    source источник
comment
Вам не нужно, чтобы ваше приложение ссылалось на каждую сборку, используемую в плагине, но вам, вероятно, потребуется, чтобы оно загружало их.   -  person Rob    schedule 06.03.2010


Ответы (1)


Дело не в том, что ваше приложение должно ссылаться на каждую сборку, которую использует подключаемый модуль. Плагин ссылается на другую DLL, а не на ваше приложение, и плагин должен быть «установлен» (может быть, просто помещен в каталог) вместе со всем, что ему нужно. Это неизбежно.

person Timores    schedule 05.03.2010
comment
Вот оно. Отсутствовала одна из зависимостей подключаемого модуля DLL. Спасибо! - person PaulH; 06.03.2010