Поздняя загрузка .net плагина dll - PullRequest
3 голосов
/ 06 марта 2010

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

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

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

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

Спасибо, PaulH

1 Ответ

2 голосов
/ 06 марта 2010

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

...