问题
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
回答1:
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
- Right-click your project
- Click "Add Reference..."
- And then select "System.Management" from the "Assemblies" tab
来源:https://stackoverflow.com/questions/24816703/c-sharp-error-namespaces-managementclass-managementobject-and-managementobje