最近.NET社区对Mono的热情很高,这也算是微软.NET战略的一个副产品吧。Mono现在的主战场还是在Linux上,可我是个纯粹的Windows程序员,懒得配置一个Linux环境,于是心有不甘地去Mono的老窝逛,发现有Windows的安装程序,于是就下载了一个Mono 1.0.6 for windows。下载的路径是:http://www.mono-project.com/Downloads
安装完成后,在开始菜单里选择Mono Command Prompt,得又回到命令行时代了。用过JAVA的人,应该对Mono的编译和执行方式不陌生。编译是mcs,执行是mono。于是照着前人的例子开始写第一个程序:
using System;
namespace mynamespace
{
public class HelloWolf
{
public static void Main(string [] args)
{
Console.WriteLine("Hello,wolf!");
}
}
}
保存为Hellowolf.cs,然后在命令行里输入:mcs Hellowolf.cs。编译顺利,然后执行mono Hellowolf.exe,一切正常。我试着直接输入Hellowolf.exe,哈,竟然也能正常运行,莫非Mono的IL和.NET Framework是兼容的?这个问题有待研究。
好了,接下来该写个窗口了。Mono下可没有System.Windows命名空间,而是用一个叫Gtk的空间替代了,照着例子写下了下面的代码,保存为MyMain.cs。
// MyMain.cs
// Copyright (c) 2005,aawolf
//
using System;
using Gtk;
namespace WolfDemo
{
public class MyMain
{
private Gtk.Window window;
public static void Main (string[] args)
{
Application.Init ();
new MyMain ();
Application.Run ();
}
public MyMain()
{
window = new Gtk.Window ("Gtk# Code Demos");
window.SetDefaultSize (600, 400);
window.DeleteEvent += new DeleteEventHandler (WindowDelete);
window.ShowAll ();
}
private void WindowDelete (object o, DeleteEventArgs args)
{
Application.Quit ();
args.RetVal = true;
}
}
}
好了,照例执行mcs,可是这次出错了,提示找不到Gtk。我为这事着实花了些工夫,最后才在X:/Mono/lib/mono/gtk-sharp下找到了一个叫gtk-sharp.dll的文件。不敢确定是不是,于是用Reflector看了一下,证明里边确实包含了Gtk命名空间。
于是执行:mcs MyMain.cs –r:d:/mono/lib/mono/gtk-sharp/gtk-sharp.dll
好了,这次终于编译通过,执行mono MyMain.exe,于是Mono的第一个窗口出现了。再试着直接运行MyMain.exe,这次出来的是VS JIT Debugger,毕竟.NET Framework里没有Gtk。
好了,第一次这个样子就差不多了,回头慢慢研究J