Каков правильный способ выполнения некоторой статической финализации?
Нет статического деструктора. Событие AppDomain.DomainUnload не отображается в домене по умолчанию. Событие AppDomain.ProcessExit разделяет общее время трех секунд (настройки по умолчанию) между всеми обработчиками событий, поэтому оно не может использоваться.