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

问题描述 投票:0回答:2

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

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

c# .net linux windows cross-platform
2个回答
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:如何获取计算机的 RAM 总量?
Linux:运行

free -m
并使用
Process
类解析结果。

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


0
投票

快进到 2024 年底,我们现在有了一个名为 Hardware.Info 的 NuGet 包:

https://github.com/Jinjinov/Hardware.Info

我没有参与这个项目,只是分享给未来的搜索者。

我在 .NET 8 中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.