microsoft.diagnostics.tracing.eventsource.dll 是 Microsoft.Diagnostics.Tracing.EventSource 程序集在 Windows 平台上的托管实现,承载 System.Diagnostics.Tracing.EventSource 类族。在 .NET Framework 4.5 之前,EventSource 并未内置于框架,微软以独立程序集的方式向开发者交付 ETW 写入能力;即便在后续版本中,该程序集仍作为兼容层与功能补充存在,被大量诊断类库、日志框架与遥测 SDK 引用。
1.事件源定义与写入:派生类通过 [Event] 特性标注方法,运行时动态生成事件描述符并完成 write 路径的 IL 编织,将强类型参数序列化后写入 ETW 内核缓冲区。
2.自描述事件格式:不依赖预注册清单,事件负载携带完整的字段名与类型信息,接收端可直接解析。
3.诊断管道桥接:把托管事件转发至 ETW 会话、进程内 EventListener 订阅者、EventLog 通道与 EventCounter 指标系统。
4.元数据与清单生成:提供清单(manifest)生成能力,供 wevtutil、PerfView 等工具完成事件注册与解析。
5.上下文关联:支持 ActivityID / RelatedActivityID 传播,为分布式追踪与因果链还原提供基础。
6.关键词与级别控制:通过 EventKeywords、EventLevel、EventOpcode 实现精细化的会话过滤与开关控制。
◆ 加载异常:应用启动或首次触达诊断代码时抛出 FileNotFoundException、FileLoadException,或提示“Could not load file or assembly”。
◆ 类型加载失败:伴随 TypeLoadException、MissingMethodException,进程可能直接崩溃或进入不可用状态。
◆ 遥测与日志中断:EventSource 派生类型无法实例化,结构化事件不再写入 ETL 文件,日志出现空洞。
◆ 性能监控失效:EventCounter、性能计数器与指标导出管道失去数据来源。
◆ 工具链失灵:PerfView、Windows Performance Analyzer、logman、wevtutil 等采集不到目标进程的事件数据。
◆ 依赖组件连带故障:Application Insights、DiagnosticSource、ASP.NET Core 日志管线以及部分安装、更新程序在引用该程序集时出现异常。
◆ 排障困难:故障本身缺乏事件日志记录,形成“无日志可查”的恶性循环,显著拉长定位周期。