ManagementObjectSearcher不包含Get的定义



我正试图让这段简单的代码发挥作用。

public void GetHDDSerial()
{
var hdd = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Index = '0'")
.Get()
.Cast<ManagementObject>()
.First();
MessageBox.Show(hdd["Model"].ToString());
}

using System.Management已经存在,我还引用了该程序集(Visual Studio>项目>添加引用>System.Management)

我得到的错误是没有定义Get()方法。具体而言:

错误CS1061"ManagementObjectSearcher"不包含定义对于"Get"且没有接受的第一个参数的扩展方法"Get"未能找到类型"ManagementObjectSearcher"(是否缺少使用指令还是程序集引用?)

为什么?我认为getter和setter是预定义的。我还需要参考什么吗?

EDIT:通过ManagementObjectSearcher,列出所有实际存在的方法,我得到了这些方法:ToStringEqualsGetHashCodeGetType

编辑#2:转到定义(F12,或右键单击),我得到的是:

namespace myProgram
{
internal class ManagementObjectSearcher
{
private string v;
public ManagementObjectSearcher(string v)
{
this.v = v;
}
}
}

NET版本是4.6.01055,我使用的是Visual Studio 2015 Enterprise。

此代码适用于我,并正确列出了我的主驱动器。我添加了以下using,并添加了对System的引用。管理和系统。经营仪器仪表。应该为你工作。NET 4.6.1。

using System;
using System.Linq;
using System.Management;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var hdd = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Index = '0'")
.Get()
.Cast<ManagementObject>()
.First();
Console.WriteLine(hdd["Model"].ToString());
Console.Read();
}
}
}

示例输出:"Samsung SSD 840 EVO 250GB">

找出问题所在。我一定是在没有意识到的情况下点击并接受了其中一个建议的修复程序,这创建了一个覆盖。很抱歉浪费了大家的时间。

在生成时遇到了相同的问题。NET库。净4.7.2通过安装系统解决了问题。通过nuget的管理包https://www.nuget.org/packages/System.Management/

最新更新