关于debian错误CS0234的单声道

时间:2012-07-12 22:06:48

标签: c# mono

我有一个debian服务器,我将其mac地址保存在/ usr文件夹中的txt文件中。

每次启动机器时,我正在尝试的脚本应该检查当前的mac地址并将其与txt文件中保存的地址进行比较。如果它们不匹配,机器应该关机。

代码适用于Windows,但我必须使它在debian上运行。所以我安装了mono(apt-get install mono-complete),创建了包含代码的.cs文件并将其传输到debian机器上。

当我运行mcs shutdown.cs(shutdown是我创建的文件的名称)命令时出现此错误:

  

CS0234:命名空间“System.Net”中不存在类型或命名空间名称“NetworkInformation”。你错过了装配参考吗?**

如何解决这个问题?

using System.Net.NetworkInformation;

      static void Main(string[] args)
      {
          string newmc = Convert.ToString(GetMacAddress()); //current mac address
          string mc = File.ReadAllText(@"/usr/mc.txt"); //mac address saved on a       txt file previously
          if (newmc != mc)   //shutdown if the mac addresses dont match
          {
              System.Diagnostics.Process.Start("shutdown.exe", "-s -t 0"); 
           }
      }
      static string GetMacAddress()
      {
          string macAddresses = "";
          foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
          {
             if (nic.NetworkInterfaceType != NetworkInterfaceType.Ethernet) continue;
             if (nic.OperationalStatus == OperationalStatus.Up)
             {
                macAddresses += nic.GetPhysicalAddress().ToString();
                break;
             }
           }
         return macAddresses;
        }

3 个答案:

答案 0 :(得分:0)

System.Net.NetworkInformation.NetworkInterface类在System.dll中根据:http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface。您是否尝试在编译时添加对System.dll的引用?我相信这是mcs的“-r”参数。

顺便说一句,您使用的是什么版本的Mono。 Debian因以“稳定”的味道运送非常古老的Mono版本而闻名。现在推荐Mono 2.10.x或更高版本稳定。

答案 1 :(得分:0)

System.Net.NetworkInformation.NetworkInterface引入了.NET 2.0。如果要使用它,则需要定位.NET 2.0配置文件或更新版本。

如果使用命令行编译器进行编译,请使用gmcs或dmcs来编译项目。 如果您使用的是MonoDevelop,则需要在项目设置中设置适当的框架版本。

答案 2 :(得分:-1)

这是你在Ruby中的方法。

begin
  theMac = File.read("/usr/path/to/text/file.txt")

rescue Exception => e
  puts e.message
  puts e.backtrace.inspect
end

response = `ifconfig eth0`
mac = response.match(/HWaddr (.*?):(.*?):(.*?):(.*?):(.*?):(.*?) /)

if theMac == mac[0] then `sudo shutdown -h now`; end

f = File.open("/usr/path/to/text/file.txt", "w")
f.write(mac[0])
f.close()