[英]ManagementObjectSearcher does not contain a definition for 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”的定義,並且找不到接受“ManagementObjectSearcher”類型的第一個參數的擴展方法“Get”(您是否缺少 using 指令或程序集引用?)
怎么來的? 我認為 getter 和 setter 是預定義的。 我還需要參考其他東西嗎?
編輯:通過 ManagementObjectSearcher,並列出所有實際存在的方法,我得到這些方法: ToString
、 Equals
、 GetHashCode
、 GetType
。
編輯#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。
弄清楚是什么問題了。 我一定是在沒有意識到的情況下單擊並接受了建議的修復程序之一,這造成了覆蓋。 為浪費大家的時間而道歉。
此代碼適用於我並正確列出了我的主要驅動器。 我添加了以下使用並添加了對 System.Management 和 System.Management.Instrumentation 的引用。 應該適合您使用 .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();
}
}
}
示例輸出:“三星 SSD 840 EVO 250GB”
使用 .NET 4.7.2 構建 .NET 庫時遇到同樣的問題 通過 nuget https://www.nuget.org/packages/System.Management/安裝 System.Management 包解決了該問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.