刚学C#,下面一段程序,我在控制台应用程序下运行总是报:
The type or namespace name 'Management' does not exist in the namespace 'System' (are you missing an assembly reference?)为什么?是不是控制台程序下没有该引用?
using System; 
using System.Management;          //在VS2005下,建什么工程可以用?? namespace ConsoleApplication1 

    class Program 
    { 
        static void Main(string[] args) 
        { 
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
            ManagementObjectCollection nics = mc.GetInstances(); 
            foreach (ManagementObject nic in nics) 
            { 
                if (Convert.ToBoolean(nic["ipEnabled"]) == true) 
                { 
                    Console.WriteLine((nic["IPAddress"] as String[])[0]); 
                    Console.WriteLine((nic["IPSubnet"] as String[])[0]); 
                    Console.WriteLine((nic["DefaultIPGateway"] as String[])[0]); 
                } 
            } 
        } 
    } 
}

解决方案 »

  1.   

    在工程的引用中添加System.Management
      

  2.   

    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 怎么不见你里面的方法呀!
      

  3.   

    在工程的引用中添加System.Management
      

  4.   

    添加引用里面--.net选项卡下   你找找
      

  5.   

    缺少了Management.dll看看工具选项卡中有没有,如果有了,这样引用是没有问题的。
      

  6.   

    问一下楼主:(nic["IPAddress"] as String[])[0]   //这段代码怎么理解?
    和nic["IPAddress"].ToString() 效果是一样的  为什么要那样写?
      

  7.   


    效果肯定不一样。因为 nic["IPAddress"] 本质上是一个字符串数组(string[]),而取得值时它的类型是 object,所以要从object转换为它的真正类型。(nic["IPAddress"] as String[])[0] 的输出是“192.168.51.100”之类的实际内容,
    而 nic["IPAddress"].ToString() 的输出是 “System.String[]”。
      

  8.   

    if (Convert.ToBoolean(nic["ipEnabled"]) == true) 
    可以改为:
    if ((bool)nic["ipEnabled"])
    效果是一样的。