簡體   English   中英

ManagementObjectSearcher 不包含 Get 的定義

[英]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,並列出所有實際存在的方法,我得到這些方法: 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。

弄清楚是什么問題了。 我一定是在沒有意識到的情況下單擊並接受了建議的修復程序之一,這造成了覆蓋。 為浪費大家的時間而道歉。

此代碼適用於我並正確列出了我的主要驅動器。 我添加了以下使用並添加了對 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM