C# ManagementObject类未显示在System.Management命名空间中
我正在尝试在windows窗体中编写一些WMI,ManagementObject给了我 “找不到类型或命名空间名称‘ManagementObject’”错误 这是我不完整的代码:C# ManagementObject类未显示在System.Management命名空间中,c#,.net,C#,.net,我正在尝试在windows窗体中编写一些WMI,ManagementObject给了我 “找不到类型或命名空间名称‘ManagementObject’”错误 这是我不完整的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Threading; using System.Security.Policy; usi
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Security.Policy;
using System.Management;
using System.Management.Instrumentation;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"C:\"");
确保您的项目未设置为根据.NET 4 Framework客户端配置文件进行编译
有关详细信息,请参阅。是否已添加对System.Management程序集的引用?您需要将对System.Management.dll的引用添加到项目中
您可以查看System.Management.Instrumentation,而无需添加对System.Management.dll的引用,因为它包含在不同的库中(System.Core.dll,自动作为引用包含),但是,如果不显式添加对System.Management.dll库的引用,则无法访问该命名空间包含的其他类型。右键单击右侧的引用,然后手动添加System.Management。即使我把它包括在using语句中,我仍然必须这样做。一旦我这样做了,一切都很好。我认为问题在于Win32\u LogicalDisk没有WMI对象。DeviceID=\“C:\”。 尝试替换:
ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"C:\"");
与:
然后逐步浏览每个字段:
foreach (ManagementObject o in disk.Get()){
//Do what ever you need here.... For example:
Console.WriteLine(o.ToString());
}
在解决方案资源管理器中,右键单击引用,然后添加引用。。。在Framework下,您应该激活System.Management Framework。~只需使用nuget manager添加System.Management,
这对我有用!c#我拥有的Visual Studio版本没有通过导入“System.Management”命名空间导入ManagementObjectSearcher。如果您有相同的问题,请尝试通过执行以下步骤添加对“System.Management.dll”的引用
我查看了链接并检查了我的目标框架。它是.NET 3.5。当我们使用System.Management;直接告诉Visual Studio时,为什么Visual Studio不自动包含引用(这是正确的行为。奇怪的是,即使未添加其引用,它也能识别
System.Management
。这是一个错误还是必须如此?我认为这是因为我使用的是.net4.0。请注意,如果您将csproj设置为只读(例如,使用Performance),Visual Studio中的引用列表将显示它在其中,但实际上不会添加它!执行此操作后仍会显示此错误。对于其他找不到它的用户,请在“引用管理器”中展开“程序集”并转到“框架”“。虽然对我来说,它已经被勾选了,但在任何不是开发机器的机器上仍然不起作用。
foreach (ManagementObject o in disk.Get()){
//Do what ever you need here.... For example:
Console.WriteLine(o.ToString());
}