我正在尝试使用 System.Management 和 System.Management.Instrumentation 命名空间来获取有关我的程序正在运行的硬件的一些信息。但是 System.Management 下的类似乎丢失了。我可以导入命名空间,但它似乎不包含任何东西。Instrumentation Namespace 似乎有它的所有类。我确定我正在查看 .net 4 框架 API,它似乎应该在那里。有任何想法吗?
1 回答
一个命名空间可以分散在多个框架程序集中。System.Management.Instrumentation 肯定是这种情况,它出现在 System.Core.dll 中。这是一个程序集,由您选择的项目模板自动添加为参考,以启动您的项目。
System.Core 非常有用,例如它包含 Action<> 和 Func<> 委托类型。几乎所有程序都对它们有用,因此它会自动添加。System.Management.Instrumentation 命名空间随之而来。这对于 .NET 程序集并不典型,但 System.Core 有点特殊,它包含在 .NET 3.5 中添加的类,它们不想与 .NET 2.0 和 .NET 3.0 程序集混淆。
但是要使用 WMI 完成一些有用的事情,您需要像 ManagementQuery 这样的类,它们存在于另一个程序集 System.Management.dll 中。这不像 System.Core 那样自动完成,WMI 不是常用的东西。所以它是可选的,你必须要求它。
使用 Project + Add Reference 添加 System.Management
使用 MSDN Library 找出需要添加哪些程序集才能使用特定的类,文章顶部对此进行了详细记录。对于 ManagementQuery,您将看到:
命名空间: System.Management
程序集: System.Management(在 System.Management.dll 中)
最后一行是你的提示。