问题描述:

So, I've got a full list of errors after importing a C# Class. I searched for the error and got a ton of hits however they all say to just add the System.Management namespace which is there and yet it gives these errors.

Similar questions. No solution worked for me:

Missing directive or assembly reference using WMI ManagementObjectSearcher?

'ManagementClass' does not exist in the namespace 'System.Management'

The type or namespace cannot be found (are you missing a using directive or an assembly reference?)

Class:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Collections;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Diagnostics;

using System.Text.RegularExpressions;

using System.Net;

using System.Xml;

using System.IO.Compression;

using System.Runtime.InteropServices;

using System.Threading;

using System.Management;

using Microsoft.Win32;

using System.Net.NetworkInformation;

using System.Security.Cryptography;

namespace PCID_Grabber

{

public class PCID

{

public static string GetCPUId()

{

#region CPUid

string cpuInfo = String.Empty;

string temp = String.Empty;

ManagementClass mc = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)

{

if (cpuInfo == String.Empty)

{

cpuInfo = mo.Properties["ProcessorId"].Value.ToString();

}

}

return cpuInfo;

#endregion

}

public static string GetMotherBoardID()

{

#region Mboard

ManagementObjectCollection mbCol = new ManagementClass("Win32_BaseBoard").GetInstances();

ManagementObjectCollection.ManagementObjectEnumerator mbEnum = mbCol.GetEnumerator();

mbEnum.MoveNext();

return ((ManagementObject)(mbEnum.Current)).Properties["SerialNumber"].Value.ToString();

#endregion

}

public static string GetMacAddress()

{

#region MacAddress

string macs = "";

NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

foreach (NetworkInterface ni in interfaces)

{

PhysicalAddress pa = ni.GetPhysicalAddress();

macs += pa.ToString();

}

return macs;

#endregion

}

public static string GetVolumeSerial()

{

#region HD serial

string strDriveLetter = "";

ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");

ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)

{

try

{

if ((UInt16)mo["MediaType"] == 29)

{

String serial = mo["SerialNumber"].ToString().Trim();

if (!String.IsNullOrEmpty(serial))

{

strDriveLetter = (string)mo["SerialNumber"];

return strDriveLetter;

}

}

}

catch { }

}

return strDriveLetter;

#endregion

}

public static string GetGenericID()

{

#region UID

string ID = GetCPUId() + GetMotherBoardID() + GetMacAddress() + GetVolumeSerial();

HMACSHA1 hmac = new HMACSHA1();

hmac.Key = Encoding.ASCII.GetBytes(GetMotherBoardID());

hmac.ComputeHash(Encoding.ASCII.GetBytes(ID));

StringBuilder sb = new StringBuilder();

for (int i = 0; i < hmac.Hash.Length; i++)

{

sb.Append(hmac.Hash[i].ToString("X2"));

}

return sb.ToString();

#endregion

}

}

}

List of Errors:

Error 1 The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 31 13 PCID Grabber

Error 2 The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 31 38 PCID Grabber

Error 5 The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 46 52 PCID Grabber

Error 8 The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 69 13 PCID Grabber

Error 9 The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 69 38 PCID Grabber

Error 7 The type or namespace name 'ManagementObject' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 49 22 PCID Grabber

Error 3 The type or namespace name 'ManagementObjectCollection' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 32 13 PCID Grabber

Error 4 The type or namespace name 'ManagementObjectCollection' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 46 13 PCID Grabber

Error 6 The type or namespace name 'ManagementObjectCollection' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 47 13 PCID Grabber

Error 10 The type or namespace name 'ManagementObjectCollection' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs 70 13 PCID Grabber

网友答案:

You also need to add an assembly reference to your project. You need to reference the System.Management assembly in your project, otherwise the using statements will not be able to locate the namespaces

  1. Right-click your project
  2. Click "Add Reference..."
  3. And then select "System.Management" from the "Assemblies" tab

相关阅读:
Top