Ctor EventPipeController обращается к AppContext.BaseDirectory и передает результат в Path.Combine, который генерирует исключение ArgumentNullException, если BaseDirectory возвращает значение null. BaseDirectory возвращает результат GetBaseDirectoryCore, который вызывает Assembly.GetEntryAssembly () ?. Location. GetEntryAssembly может вернуть значение null, и в этом случае GetBaseDirectoryCore вернет значение null, и в этом случае Path.Combine выбрасывает, а ctor EventPipeController выбрасывает. Это будет съедено в методе Initialize универсальным блоком, но, похоже, лучше вообще не бросать.
Вызов конфигурации EventPipe на основе файлов предназначен для молчаливого сбоя, если что-то пойдет не так - как вы упомянули, эта логика заключена в блок try / catch / finally. Поскольку вызов конфигурации на основе файлов для Eventpipe будет полностью удален в следующих изменениях, я пока оставлю это как есть.
Самый полезный комментарий
Вызов конфигурации EventPipe на основе файлов предназначен для молчаливого сбоя, если что-то пойдет не так - как вы упомянули, эта логика заключена в блок try / catch / finally. Поскольку вызов конфигурации на основе файлов для Eventpipe будет полностью удален в следующих изменениях, я пока оставлю это как есть.