如何以跨平台方式使用 .NET 5 获取硬件信息?

How do I get Hardware Info with .NET 5 in a Cross Platform Way?

我正在开发 .NET 5 控制台应用程序,希望能够读取一些基本系统信息,例如 CPU 温度、内存使用情况、CPU 使用情况等。我的开发机器是 运行 windows 但应用程序部署到 Linux 机器,因此我想避免为 OS 编写两组不同的代码。

如何以跨平台方式执行此操作?有很多 Windows API 和调用可以做到这一点,但我也需要 Linux 才能工作。

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

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

对于 CPU 这样的用法,您可能会成功使用 How to get the CPU Usage in C#? (Windows)。

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

sudo apt install sysstat
mpstat 1

GC class 具有获取 C# 运行时使用的内存的方法。对于系统内存,这里有一些资源:
Windows: How do you get total amount of RAM the computer has?
Linux: 运行 free -m 并使用 Process class.

解析结果

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