Есть ли способ динамически перезагрузить, а затем повторно использовать DLL и все ее классы, когда приложение работает? - PullRequest
1 голос
/ 06 октября 2010

Моя цель ниже сценария:

  • Я запустил приложение (Win32)

  • Приложение использует набор классов из некоторой библиотеки классов .NET.

  • Я изменяю некоторый код в этой библиотеке классов .NET, компилирую новую dll

  • В своем работающем приложении я уничтожаю все объекты из этой библиотеки и перезагружаю ее.

  • Мое приложение все еще работает, и все изменения кода сделаны!

Я полагаю, что Spiring.NET (или аналогичная структура) предоставляет такую ​​функциональность и нуждается в вашей помощи.

Большое спасибо!

1 Ответ

1 голос
/ 06 октября 2010

Вы не можете выгрузить сборку после загрузки.Однако вы можете выгрузить AppDomain .Таким образом, способ сделать это в .NET состоит в том, чтобы загрузить эту сборку в отдельном AppDomain, который позже может быть снова выгружен. Здесь - простой пример того, как это сделать.

Однако у этого подхода есть и обратная сторона: объекты, которые вы хотите вызвать из другой сборки, должны быть получены из MarshalByRefObject В качестве альтернативы вы можете использовать System.Addin framework.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...