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



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

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

有一个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:如何获得计算机的RAM总量
Linux:运行free -m并使用Process类解析结果。

其他可能对Linux有用的链接:

  • https://raspberrypi.stackexchange.com/questions/117094/raspberry-pi-with-linux-and-c-on-it-how-to-read-hardware-sensor-info
  • 如何使用.Net Core识别Linux/Mac机器的硬件详细信息

最新更新