Единственный способ изолировать исключения в потоке в другом домене приложения от разрушения домена по умолчанию - использовать:
<runtime>
<legacyUnhandledExceptionPolicy enabled="1"/>
<runtime>
Который установит для флага IsTerminating исключения unhandledexception значение false и предотвратит закрытие домена по умолчанию.
В нашем случае мы подключились к UnhandledExceptionHandler в обоих доменах.
Затем мы запускаем semafore in в «ad-hosted», который будет выбран потоком, созданным для этой цели в «ad-default», который затем, в свою очередь, удаляет «ad-hosted»
Это хак и, вероятно, не доживет до будущих поколений фреймворка, но он делает "ad-default" более надежным в том смысле, что он не будет снесен при необработанных исключениях в "ad-hosted"
мы также подключаем обработчик событий в "ad-default", который будет преобразовывать отправителя в домен приложения, и проверять, возникла ли исключительная ситуация в "ad-default", в этом случае мы также отключаем "ad-default", эмулируя поведение .net 2.0, даже с настройкой времени выполнения, описанной выше.
Надеюсь, это даст кому-то подсказку, как сделать более гибкий хост плагина.