Динамическая загрузка различных версий сборки в .NET - PullRequest
2 голосов
/ 21 мая 2009

Лучше использовать System.Assembly.Load или загрузить сборку непосредственно в домен приложений, используя System.AppDomain.CurrentDomain.CreateInstanceFromAndUnwrap? Меня особенно интересует вызов разных версий одной и той же сборки, запущенных в одном и том же процессе. Я думаю, что с CreateInstanceFromAndUnwrap ваша сборка должна иметь атрибут [serializable], но почему это так?

РЕДАКТИРОВАТЬ: сборка, которую я пытаюсь загрузить, находится не в том же месте, что и вызывающая сторона.

1 Ответ

0 голосов
/ 21 мая 2009

Не в том же месте, я думаю, вы имеете в виду в другом месте файловой системы, дайте мне знать, если нет.

Лучше использовать System.Assembly.Load, так как это общий низкоуровневый загрузчик сборок.

Также вы упомянули о желании загрузить разные версии. Для этого вам нужно будет настроить вторичный AppDomain для загрузки сборки, затем выгрузить этот AppDomain, когда вы закончите, и создать новый для новой версии сборки, так как .Net не поддерживает выгрузку сборки из заданного AppDomain.

CreateInstanceFromAndUnwrap предназначен для загрузки кода, который каким-то образом был «отправлен» вам, поэтому все, с чем он работает, должен быть сериализуемым.

...