在Mono 2.10下可以运行ASP.NET MVC 3项目吗?

23
Mono 2.10的发布说明表明支持ASP.NET MVC 3.0和Razor使用XSP
在MonoDevelop 2.4.2(Mac OS X)中打开一个新创建的ASP.NET MVC 3.0默认项目(使用Visual Studio 2010创建),以下DLL文件丢失:
System.Web.Entity
System.Web.Helpers
System.Web.Mvc
System.Web.WebPages

我用从Windows安装中获取的DLL替换了所有的DLL。项目可以构建,但是在尝试调试项目时,我收到以下错误消息:

Adding applications '/:.'...
Registering application:
    Host:          any
    Port:          any
    Virtual path:  /
    Physical path: /.../Mvc3Test/
Handling exception type TargetInvocationException
Message is Exception has been thrown by the target of an invocation.
IsTerminating is set to True
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.

在进行这些替换之前,应用程序可以运行,但显然会出现缺失引用错误。这表明新的DLL文件中的某些内容正在搞乱XSP服务器。
我做错了什么?我是否太简单了?我对Mono和MonoDevelop都很陌生,但我能够成功地使用当前安装的MonoDevelop创建、构建和调试MVC 2.0项目。

请参阅Mono-aspnet-list档案。我在那里看到了大量关于ASP.NET MVC 3的讨论。 - abatishchev
请查看http://twistedcode.net/blog/post/2011/01/17/Mono-and-ASPNET-MVC-v3.aspx和http://gonzalo.name/blog/archive/2011/Jan-21.html,虽然我还没有尝试过。 - silk
2个回答

19

我很高兴。Mono的新版本2.10.1修复了与ASP.NET MVC 3.0相关的问题,现在它运行得非常顺畅。


1
性能如何?我正在考虑将我的一个asp.net mvc 3 web应用程序迁移到Linux服务器(唯一的Windows依赖是.net 4),因为在服务器上使用Windows很有趣。你会失去多少性能,内存泄漏有多糟糕? - Ivan G.

10

1
您的解决方案不起作用,直到我添加了以下内容<system.web><compilation><assemblies> <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> - 谢谢! - Webveloper
抛出给定键错误,(Webveloper我添加了你的代码) - Chazt3n
如果可以的话,我会给你一百万个赞。在找到这个答案之前,我一定花了几周时间试图让Razor MVC3在Mono上运行。 - June Rhodes
@Chazt3n:尝试从您的bin文件夹中删除Microsoft.Web.Infrastructure.dll([来源](http://www.integratedwebsystems.com/2011/06/get-mvc3-razor-running-on-mono/))。 - Simon Rice
几个月前我已经修复了它 :) 不过还是谢谢! - Chazt3n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接