如何在跨平台的方式下,使用.NET 5获取硬件信息?

3
我正在开发一个.NET 5控制台应用程序,希望能够读取一些基本的系统信息,如CPU温度、内存使用情况、CPU使用率等。我的开发机器运行的是Windows操作系统,但应用程序将部署到Linux机器上,因此我希望避免为两个操作系统编写不同的代码。
如何以跨平台的方式实现这一目标?有许多适用于Windows的API和调用可以实现这一功能,但我需要在Linux上也能工作。

FYI,目前正在讨论将此部分纳入运行时:https://github.com/dotnet/runtime/issues/22948 - jjxtra
我整理了这个问题,我认为值得提问而不是关闭。 - jjxtra
我制作了一个跨平台库:https://github.com/Jinjinov/Hardware.Info - Jinjinov
1个回答

2

有一个Github问题正在开放,旨在将其作为.net运行时的一部分进行标准化。也许我们会在.net 6或7中看到这一点,谁知道呢... https://github.com/dotnet/runtime/issues/22948

这是其中较好的库之一:https://github.com/openhardwaremonitor/openhardwaremonitor。他们似乎尝试了一些Linux支持。

对于像 CPU 使用率 这样的东西,你可能会在如何在C#中获取CPU使用情况?(Windows)中获得成功。

对于 Linux 上的 CPU,解析命令行结果:https://phoenixnap.com/kb/check-cpu-usage-load-linux。简而言之:

sudo apt install sysstat
mpstat 1

GC类具有获取C#运行时内存使用情况的方法。关于系统内存,以下是一些相关资源:
Windows: 如何获取计算机总内存?
Linux: 运行free -m并使用Process类解析结果。

其他可能对Linux有帮助的链接:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接