性能计数器与.Net Core的兼容性

时间:2019-01-07 10:22:00

标签: c# windows .net-core etw

在.Net Core中是否有任何nuget程序包或帮助程序来控制自定义性能计数器?我正在使用System.Diagnostics.PerformanceCounter程序包。

Visual Studio具有PerfWatson2(开发人员分析工具)扩展,该扩展在调试时运行,因此我可以更改计数器值。

但是,如果我将该代码作为服务安装在该计算机上并启动,则性能计数器值不会更改(始终为零)。服务用户已添加到“性能监视器用户”。

如果我将服务用户添加到“管理员”组中。然后性能计数器开始工作。

也许“性能监视器用户”组不能与.Net Core一起使用?由于性能计数器,我不想以管理员权限运行服务。

尝试过Microsoft.Windows.Compatibility nuget包,但仍然没有运气。 https://blogs.msdn.microsoft.com/dotnet/2017/11/16/announcing-the-windows-compatibility-pack-for-net-core/

2 个答案:

答案 0 :(得分:1)

不幸的是,移植 System.Diagnostics.PerformanceCounter nuget 包的人删除了为性能计数器设置对内存映射文件的正确权限的行。如果您查看 SharedPerformanceCounter.Initialize,原始行“sECURITY_ATTRIBUTES.lpSecurityDescriptor = pSecurityDescriptor;”已在端口中删除。

答案 1 :(得分:1)

此问题已解决 - a fix 已合并到 https://github.com/dotnet/runtime