您的位置:首页 > 编程语言 > ASP

Run ASP.NET MVC site on mac (mono/xamarin studio)

2014-03-13 15:31 501 查看
我们选择用xamarin studio来测试,如果你直接进xamarin的官网,那么会有一个更好看的网站和更复杂的流程(比如需要注册),我们直接到mono项目找mac的支持吧,点此进入

相关sdk和app都安装好后,进入xamarin studio(如果有更新,那就更新一下),我们建一个asp.net mvc3项目(时至今日,mvc已经是5.1了,这个待会说)

项目建好后,我们发现有两个引用找不到文件:system.web.helpers和system.web.webpages,网上有让你从gac里自行添加进去的方法,我们不这么做,直接删掉,然后,我们从nuget来安装最新的mvc

如何为xamarin添加nuget插件

接下来在项目或者引用文件夹上右键,管理nuget package,我们搜索“mvc”关键词,得到
Microsoft ASP.NET MVC
这个项目,点击安装

同意协议并安装后,下方的message会提示你不能安装到.net 4.0的项目上,于是我们退出package manager,在解决方案管理器内右键项目,选择'Options/Build/General',在Target framework里面选上
Mono/.NET 4.5
即可

重新从nuget添加,我们发现装好后,mvc已经是5.1了

packages.config:
<package id="Microsoft.AspNet.Mvc" version="5.1.1" targetFramework="net45" />


web.config:

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


为了让错误来提示我们应该改什么,而不是死记硬背,我们先运行一下项目

得到一个
Access to the path "/Library/Frameworks/Mono.framework/Versions/3.2.5/etc/mono/registry" is denied.
的错误,点此查看解决办法,我选择了执行脚本的方法,而不是去修改csproj文件

重新测试运行,得到一个
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文件,直接删除掉
appSetting
节点下的
<add key="webpages:Version" value="1.0.0.0" />
(你也可以改为3.0.0.0)

继续测试,得到一个错误:
System.InvalidOperationExceptionCould not locate Razor Host Factory type: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0
,这个时候,找到
view
目录下的web.config文件,定位到
system.web.webPages.razor/host
节点(错误提示很明确了),把其中的3.0.0.0改为5.1.0.0

到目前为止,我的程序已经是能跑起来了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: