15.06.2020, 13:13 | #1 |
Участник
|
Сбросить кеш CIL без рестарта аоса
Привет всем.
Коллеги есть проблема. ax2012 R3 2 аоса. Пользовательский и пакетный. На пользовательском аосе сделали маленькую правку и собрали инкрементный CIL. Пакет ее не видит, так как .net сборка в нем закеширована и поэтому в пакете исполняется старый код.. Возможно как-то заставить его обновить этот кеш, не рестартуя пакетный аос ? Пока знаю один вариант Внести такие же правки на пакетном аосе и сделать на нем инкрементный CIL. Но это неудобно. Есть ли вариант попроще ? |
|
15.06.2020, 15:37 | #2 |
Участник
|
Привет, лет 5 назад делал подобную модификацию. Во вложении класс, можно сделать на него кнопку где-нибудь в сервисе. Класс загружает последний актуальный CIL из базы модели. Только надо иметь ввиду, что все равно при выполнении xApplication.stopBatch() система будет ждать пока кончатся все сессии CIL (а иногда она вообще ждет не пойми чего), без этого она не может "отцепиться" от старой dll. Но аос перезагружать не надо.
У меня правда что-то не пошло с этим делом, после нажатия видимо были активные сессии CIL и система зависла ожидая их окончания и я в итоге так и не стал его использовать. Вообще весь код кроме непосредственной генерации сборки открытый, в классе SysCompileIL, оттуда можно повыдергивать все что нужно. И что касается пакетников, мне кажется их проще просто перезагрузить, там же пользователи не работают, они об этой перезагрузке даже не узнают. Другое дело ситуация с несколькими пользовательскими аосами. |
|
|
За это сообщение автора поблагодарили: mazzy (2), fed (5), trud (2), sukhanchik (8), Logger (20). |
Теги |
ax2012r3, cil, кеш |
|
|