2008-12-01 2 views
2

Я пишу веб-приложение, которое будет иметь «плагины». Плагины будут .DLL-файлами, которые будут экспортировать свою функциональность через предопределенные интерфейсы. Все файлы .DLL находятся в папке под названием «Плагины», а приложение ASP.NET загружает их при запуске (с помощью Assembly.LoadFrom).Перезапустите приложение ASP.NET при изменении содержимого папки

Проблема в том, что при разработке эти плагины будут меняться довольно часто (все функциональные возможности находятся в плагинах, сам сайт - всего лишь скелет). Таким образом, мне нужен способ автоматического перезапуска приложения при изменении файлов .DLL.

Как это сделать?

+0

Вы знаете, что я не уверен на 100%, но у меня сложилось впечатление, что если вы меняете dll во время выполнения, IIS выбирает это и перерабатывает домен приложения, и я думаю, что по умолчанию ваши новые dll будут фактически перезагружены и все сеансы и т. д. – Robert 2008-12-01 10:01:20

+0

Возможно, если они были в папке «bin», я еще не пробовал. Но наплевать на папку «Плагины» не наплевать. : P – 2008-12-01 10:02:53

+0

oh я вижу, помещаю папку плагинов в папку с бункером – Robert 2008-12-01 10:21:51

ответ

6

Если каталог плагинов находится под вашим каталогом Bin, веб-приложение будет автоматически перезагружаться, когда что-либо изменится.

2

Класс FileSystemWatcher является общим решением этих проблем, а HttpRuntime.UnloadAppDomain(); - это один из способов перезагрузить приложение. Я думаю, что требуется больше исследований/объяснений: существует множество возможных решений.

Редактировать: Probling Paths. Хороший ответ.