我可以在C#控制台应用中使用EventSource成功生成ETW事件;但是,如果我将事件存储在ETL文件中并使用Windows性能分析器,则与有效负载值,事件名称和提供者名称对应的列为空。
问题
是否有任何额外的EventSource配置允许WPA中的列被填充?
备注:
最小代码:
using System.Diagnostics.Tracing;
namespace EtwConsoleApp {
class Program {
static void Main(string[] args) {
MyEventSource.Instance.MyEvent("x");
MyEventSource.Instance.MyEvent("y");
MyEventSource.Instance.MyEvent("z");
}
}
[EventSource(Guid = "56ff7ff6-0418-4501-945f-c12737bc1c70")]
sealed class MyEventSource : EventSource {
[Event(1, Level = EventLevel.Verbose, Opcode = EventOpcode.Info)]
public void MyEvent(string value) {
this.WriteEvent(1, value);
}
public static MyEventSource Instance = new MyEventSource();
}
}
查看WPA中的空行:
答案 0 :(得分:0)
.NET 4.5中的System.Diagnostics.Tracing.EventSource不会生成WPA可以正确显示的事件。
解决方案是使用: Microsoft.Diagnostics.Tracing.EventSource
另一个解决方案是使用: .NET 4.6中的System.Diagnostics.Tracing.EventSource(在我的情况下是不可能的)
答案 1 :(得分:0)
System.Diagnostics.Tracing
表示您使用.net framework 4.5的收件箱版本。试试Nuget版本Microsoft.Diagnostics.Tracing.EventSource,它会更频繁地更新以获得新功能。