首页>>asp.net mvc>>MAC上初探 ASP.NET MVC + NHibernate run in Mono
热点文章

MAC上初探 ASP.NET MVC + NHibernate run in Mono


 人就是这样,会受周边环境影响,当习惯在MAC上你就不会脱身了。虽然我是微软MVP, 但是更喜欢在MAC上工作。不过有一点肯定的,我不会随意丢弃那个衣食的C# 。推广Xamarin 一年了,主要在移动端,现在我更希望把服务端也搬到MAC上。其实迁移也不难,毕竟还是用ASP.NET MVC,只是开发环境变了,以前在Windows ,现在在MAC上。这篇文章是我利用一天的时间搭建过程中总结的一些经验,希望大家少走弯路。小弟才疏学浅,不当的也望大家提点。

1. 开发环境的设置 
你可以认为Xamarin Studio 就是一个Visual Studio 的跨平台IDE ,虽然两者相比不在一个数量级,但是也方便了不少需要.NET技术的跨平台开发者。要开发服务端的跨平台.NET服务端,那就不得不用ASP.NET MVC , 这个项目是开源的,而且对比传统的框架更加轻量。在Xamarin Studio  4.1中,已经自带了该框架,但是如果使用默认的框架,你会发现它根本不能运行。缺少两个基本的引用(如图)

 

这个时候你可以用两种解决办法,第一种通过Visual Studio 创建好ASP.NET MVC项目后,根据需要迁移。明理人也知道这个方法是多么的不靠谱,明明在MAC上开发了,还搞这个?真是他妈的。好我更为推荐第二种。在Xamarin Studio 中使用 nuget 。是的你没有听错,通过nuget去更新你的ASP.NET MVC项目,去把最新的库更新。方法如下:

首先打开Xamarin , 去插件管理器

接着点击"Gallery" 选择 “Manage Repository” 后添加

http://mrward.github.com/monodevelop-nuget-addin-repository/4.1/main.mrep

添加成功后,如图:

 

成功后重启即可以使用。

之后就是去引用那里选择“Manage Nuget Packages” , 重新加载ASP.NET MVC引用,即可(如图)

但当选择Microsoft ASP.NET MVC 安装时,会提示安装失败。这是因为在nuget上的版本是ASP.NET MVC 5.0 了,而对应的是.net 4.5的操作,而通过Xamarin 建立的是针对4.0的,这个时候你需要做以下操作:

右键选择项目,选择Option

 

进入Option 后,选择General 后把 Target framework 改成Mono/.NET 4.5即可

 

 然后你重新在nuget 上添加ASP.NET MVC 就成功了。

2. 运行问题。

有个比较古怪的问题,当你运行ASP.NET MVC时,会出现下面问题:

“System.UnauthorizedAccessException Access to the path “/Library/Frameworks/Mono.framework/Versions/3.2.3/etc/mono/registry” is denied.

这个是由于权限所导致的 你只需要在终端输入下面语句即可以解决

sudo mkdir /Library/Frameworks/Mono.framework/Versions/3.2.3/etc/mono/registry 

sudo chmod g+rwx /Library/Frameworks/Mono.framework/Versions/3.2.3/etc/mono/registry   

好搞好一个,另外一个问题也来了

System.InvalidOperationException Conflicting versions of ASP.NET Web Pages detected: specified version is “1.0.0.0”, but the version in bin is “3.0.0.0”. To continue, remove files from the application’s bin directory or remove the version specification in web.config

这个时候,你只需要去修改web.config 文件

把对应的 <add key="webpages:Version" value="1.0.0.0" />

改为 <add key="webpages:Version" value="3.0.0.0" />

好这个时候运行就可以顺利了。

3. 选择你的ORM

框架搞定,这个就要选择你与数据库的连接方式了。你会喜欢EF,遗憾告诉你在非Windows 平台用这个是一个坑。那用啥?介绍用NHibernate 吧 ,呵呵这个好处还是很多的。支持多数据库,性能更佳,易用等。但是咸鱼白菜各有所爱了,这里不得不提如果你用NHibernate去做项目,还会碰到以下问题


 

这个问题纠结了好久,开始以为是别的问题,后来查了下才发现是NHibernate 的兼容问题,这个说来也奇怪,从09年到现在都未解决过。最后查看了才发现这个问题 github.com/codesharp/infrastructure/issues/15

那只需要在配置文件添加 

      <property name="adonet.batch_size">0</property>

就可以了。



发布日期:2013年10月30日 日志归类:asp.net mvc 回复:0

共有0条回复,如下
暂没有相关评论



发表评论
评论内容:
必须填写

© GDOU.COM 华南师范大学网络教育学院

院办:020-85210992 传真:020-85210991

粤ICP备05028605号