Mono现在的版本是1.9,也是最终2.0的beta版,此版的System.Core库中增加了对Linq的开源实现。今天有空下载下来试了一下,感觉还不错。
只是所用的SharpDevlop3.0beta不尽人意,新建的工程一句代码都不写有时也会编译不过,比如自动加入的default.aspx得删掉重建一次才可,另外每加入一个新文件,都会自动生成很多的垃圾代码,更让人难受的是有些类实例的属性或方法竟然“点”不出,不气死算是命大,与Ms的vs.net相比这个IDE就太粗糙了。
用vs.net编写也是可以的,甚至用它编译都是可以的,只需去掉那些自动加入的企业库、扩展库就可以了。我在SharpDevlop和vs.net中分别编译通过以后,都能在mono中运行。
我其实是想试一下与数据库相关的Linq,但目前mono中还没有类似于Linq to Sql这样的框架,我在前面的日志中提到过的DbLinq2007,虽然以后可能会加入到Mono,但现在还没有看到官方消息,我在相关项目论坛上看到了很多类似的疑问,据称有一个可能的方法是,把DbLinq2007项目中,特别是Linq to MySql中的System.Data.dll用mono的System.Data.dll替换以后重新编译生成,就可以用了,这个倒没去尝试,只是试了一下仅把DbLinq2007中的DbLinq.dll添加引用,不写代码,就编译不过,我想那种方法可能也靠不住;另外,据说Linq to PostgresSql现在就可以用于Mono了,但测试了一下好象还不行。不过这些问题相信很快就会得到解决的,Mono与DbLinq都值得期待。
下面的一些代码很简单,至于哪些是windows中的专有库,用过vs.net可能都知道。很多朋友可能还没有使用过mono,可能有些帮助。这些代码可以用vs.net编写,如果想体验一下SharpDevelop可以去下载一个,如果不想使用盗版的vs.net,或者是商业公司不敢使用,或者使用的是windows平台(Linux下面可以用monodevelop),那么SharpDevelop可能是最好的选择,再说3.0正式版推出后,当然会有所改善。
要做的准备工作是安装一个mono1.9到windows,直接去官方网站http://www.mono-project.com上下载一个安装包,运行安装就会自动设定好运行环境。
为了编译和调试方便,没有做控制台的例子,只有一张网页。建立一个MonoLinq的Asp.net网站新项目,建项目的时候会自动加一个default.aspx,有这个就行了,在里面添加一个GridView控件
<asp:GridView id=”gridView1” runat=”server”>
这样页面就做好了。没有使用过mono的人只需要体验一下就行了,只要能运行起来,一个页面和Hello World!一样,足够了。
下面的步骤是用以下代码替换掉Default.aspx.cs中的代码:(注意要添加System.Core的引用)
//************************************************************************************************************
using
System
;
using
System
.
Linq
;
using
System
.
Collections
;
using
System
.
Collections
.
Generic
;
using
System
.
ComponentModel
;
using
System
.
Data
;
using
System
.
Drawing
;
using
System
.
Web
;
using
System
.
Web
.
SessionState
;
using
System
.
Web
.
UI
;
using
System
.
Web
.
UI
.
WebControls
;
using
System
.
Web
.
UI
.
HtmlControls
;
namespace
MonoLinq
{
/// <summary>
///
Description of MainForm.
/// </summary>
public
class
Default : Page
{
public
class
Student
{
public
string
Name
{
get
;
set
;}
public
double
Score
{
get
;
set
;}
}
protected
GridView gridView1
;
protected
void
Page_Load
(
object
sender
,
EventArgs e
) {
var
students
=
new
List
<
Student
>
{
new
Student
{
Name
=
"
张三
"
,
Score
=
89.5
},
new
Student
{
Name
=
"
李四
"
,
Score
=
77
},
new
Student
{
Name
=
"
王五
"
,
Score
=
87
},
new
Student
{
Name
=
"
赵六
"
,
Score
=
80
}
};
var
data
=
students
.
Select
(
p
=>
p
);
gridView1
.
DataSource
=
data
;
gridView1
.
DataBind
();
}
protected
override
void
OnInit
(
EventArgs e
) {
InitializeComponent
();
base
.
OnInit
(
e
);
}
private
void
InitializeComponent
() {
this
.
Load
+=
new
System
.
EventHandler
(
Page_Load
);
}
}
}
//*******************************************************************************************************************
很快,这样程序就写完了,指定当前项目为“启动项目”,运行编译,通过了就OK了。
在哪里去运行呢?是不是还要设定IIS?没有这么麻烦!找到刚才保存项目的文件夹,在上面单击右键,会看到一个“xsp2 Web Server Here 1.9”菜单,单击它就会弹出一个命令服务窗口,代表Mono的xsp服务已经运行,不要关闭。在浏览器中输入
http://localhost:8088/Default.aspx 搞定,运行mono就是这么简单!
假如在SharpDevelop中运行调试也可以的,要设定一下。
工程--
>工程选项--
>应用程序--
>选“库”
工程--
>工程选项--
>编译--
>目标框架--
>选“.net framework 3.5
”
工程--
>工程选项--
>调试-
>在url中启动浏览器-
>输入:http://localhost:8088/Default.aspx
另外,编译重新生成时,需要关闭xsp服务命令窗口,编译完后再打开,按启动键就可以运行调试了。
一个简单的例子,在windows中运行mono并不复杂。