Выпускает ли когда-либо CLR привязку сборки из GAC? - PullRequest
0 голосов
/ 01 мая 2009

У меня есть несколько служб, которые извлекают сборку из GAC. Когда я устанавливаю один из этих сервисов, он обновляет GAC новой сборкой, которая используется разными службами, и вставляет новый файл политики в GAC, чтобы все предыдущие версии искали новую сборку. Все службы используют политику без перезапуска службы и отлично используют новую сборку. Проблема и вопрос возникают, когда я откатываю этот выпуск, удаляю сборку и политику и перезапускаю службу, связанную с установкой новой сборки. Очевидно, что перезапущенный сервис подхватывает предыдущую версию сборки в GAC. Но другие службы, работающие на сервере, которые используют эту сборку, все еще связаны с новой версией сборки из файла политики. Мои вопросы:

Является ли привязка кешем, где она в конечном итоге освободится и вернется к старой сборке? или он останется привязанным до перезапуска службы?

Если требуется перезапуск, есть ли в любом случае, кроме поиска всех служб, использующих эту сборку, и перезапуска этих служб, или перезапуска самого сервера, чтобы удалить ослепление для сборки, удаленной из GAC?

1 Ответ

1 голос
/ 01 мая 2009

Среда выполнения .NET не выгружает сборку до тех пор, пока домен приложения не будет закрыт (обычно при выходе из процесса, но возможно создать несколько доменов приложений в одном процессе).

Я думаю, вам нужно будет закрыть другие службы, удалить файл политики и новую сборку, а затем перезапустить все задействованные службы.

...