Mono下配置ASP.Net MVC

起因

生命不息,折腾不止。新入了Macbook,本着不折腾会死的原则以及作为一个非典型性的.net爱好者,直接装上Mono框架和MonoDevelopIDE,打算尝试一下跨平台的.net开发。正巧最近在详细学习ASP.Net MVC框架中,就拿这个开刀了。打开MonoDevelopIDE,选择ASP.Net MVC 3 (Razor)模版来创建一个新项目。

Mono下配置ASP.Net MVC

现在依据模板创建的工程已经弄好了,让我们来运行一下试试看结果。

Mono下配置ASP.Net MVC

居然报错了,这是什么情况。研究下错误信息,发现好像项目里有程序集的引用有问题。在IDE里面打开项目的References目录,发现System.Web.HelpersSystem.Web.WebPages两个引用被标红。

Mono下配置ASP.Net MVC

看来是真有问题啊,只能慢慢来解决了。

安装NuGet

造成这个错误的原因其实是MVC包依赖的错误。说到.Net下的包管理,那就一定要有NuGet包管理器了。在Mono环境下我们也可以安装NuGet包管理器来管理各个包之间的依赖。

打开MonoDevelpIDE,在菜单里选择 Add-in Manager 打开插件管理器。

Mono下配置ASP.Net MVC

选择 Gallery 标签,并在 Repository 下拉菜单中选择 Manage Repositories

Mono下配置ASP.Net MVC

添加 http://mrward.github.com/monodevelop-nuget-addin-repository/4.1/main.mrepUrl 文本框中,点击确定并等待操作完成。

Mono下配置ASP.Net MVC

展开 IDE extensions,选择安装 NuGet Package Management

Mono下配置ASP.Net MVC

安装ASP.Net MVC

安装完NuGet包管理器后,我们就可以用它来下载安装MVC框架了。

打开NuGet包管理器。

Mono下配置ASP.Net MVC

搜索ASP.Net MVC,选择并安装.

Mono下配置ASP.Net MVC

这个地方有可能会出现以下这个错误,导致安装不上。

Mono下配置ASP.Net MVC

具体原因是因为现在这个项目是基于.Net 4.0构建出来的,而包安装则要在.Net 4.5环境下,所以我们需要改动下项目依赖的.Net版本。

Mono下配置ASP.Net MVC

安装完成后,我们回头看看项目里的References目录,这个时候所有引用应该都没有问题了。

Mono下配置ASP.Net MVC

修改配置

重新运行一下项目,发现还有错,不过错误信息已经发生了变化。

Mono下配置ASP.Net MVC

分析一下这个错误,看起来应该是一个配置错误。打开项目根目录下web.config文件,根据错误信息,我们来搜索下WebPages看看都有什么。 搜索的结果显示在配置文件*有三处有WebPages关键字。

     <add namespace="System.Web.WebPages" />      
     <add key="webpages:Version" value="1.0.0.0" />
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />

明显第二行中的版本号发生了错误,将其从<add key="webpages:Version" value="1.0.0.0" />修改为<add key="webpages:Version" value="3.0.0.0" />

接着再次运行程序,还是有错误,并且错误信息又发生了变化。

Mono下配置ASP.Net MVC

这个错误看起来还是一个配置上得错误。在整个解决方案中搜索错误信息中提到的MvcWebRazorHostFactory,发现在View文件夹下的Web.config文件里又这样一条配置。

     <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

回顾项目根目录下的Web.config文件,其中关于System.Web.Mvc的版本配置是这样的。

     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
     <bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />

所以将 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />改为<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

结果

进行完上面的步骤,我们再来运行一次项目。

Mono下配置ASP.Net MVC

总算是成功了,至此Mono下的ASP.Net MVC项目环境构建完成。

Mono下配置ASP.Net MVC,布布扣,bubuko.com

Mono下配置ASP.Net MVC

上一篇:html标签中lang属性及xml:lang属性的作用


下一篇:在eclipse中创建web项目(非myeclipse)