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

Performance counters compatibility with .Net Core

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

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

但是如果我将该代码作为服务安装在该机器上并启动它,性能计数器值不会改变(始终为零)。服务用户已添加到 "Performance Monitor Users"。

如果我将服务用户添加到 "Administrators" 组。然后性能计数器工作。

也许 "Performance Monitor Users" 小组没有使用 .Net Core?由于性能计数器,我不想 运行 具有管理员权限的服务。

尝试了 Microsoft.Windows.Compatibility nuget 包,但还是不行.. https://blogs.msdn.microsoft.com/dotnet/2017/11/16/announcing-the-windows-compatibility-pack-for-net-core/

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

此问题已解决 - a fix has been merged onto https://github.com/dotnet/runtime