C# 有没有办法编写独立于系统的MVC应用程序?
在过去的两天里,我尝试在Mono上运行MVC4示例互联网应用程序(在VisualStudio 2010中我们进入:文件->新建->MVC4 WebAPlication->互联网应用程序(使用Razor))时创建的应用程序),以检查我是否可以使用Linux托管任何真正的MVC应用程序 起初-我试着用Xamarian Studio和.NET运行它-没有问题:它显示了启动页面,我可以注册,登录->很棒 然后我简单地从.NET切换到Mono,所有的麻烦都爆发了C# 有没有办法编写独立于系统的MVC应用程序?,c#,asp.net-mvc,cross-platform,C#,Asp.net Mvc,Cross Platform,在过去的两天里,我尝试在Mono上运行MVC4示例互联网应用程序(在VisualStudio 2010中我们进入:文件->新建->MVC4 WebAPlication->互联网应用程序(使用Razor))时创建的应用程序),以检查我是否可以使用Linux托管任何真正的MVC应用程序 起初-我试着用Xamarian Studio和.NET运行它-没有问题:它显示了启动页面,我可以注册,登录->很棒 然后我简单地从.NET切换到Mono,所有的麻烦都爆发了 首先,它抱怨找不到log4net->安装最
在放弃之前,我会在社区论坛上发消息给mono团队/帖子。。。我听说他们反应很快。希望这有帮助 我不是Mono团队的成员,但以下是我的经验和我对如何从.NET迁移到Mono以及为什么会出现故障的观察
- Microsoft不构建ASP.NET MVC或EF来支持Mono。因此,来自Microsoft的原始程序集(在VS中本地复制)无法在Mono上正常工作。通常情况下,Mono会在GAC中提供相应的修补程序集(名称相同),因此请使用
首先检查GAC中已经存在哪些程序集,并将它们从Mono/Linux上的部署文件夹中删除。我们确实看到微软和Xamarin在兼容性方面进行了合作,但完成所有工作需要时间sudo find/| grep name_of_assembly
- 不要在Windows上使用Xamarin Studio进行测试。不,这不可靠,因为它仍然使用.NET。您需要在Linux上使用MonoDevelop
今天不要期望Java或Qt级别的兼容性,因为Java要花很多年才能达到这个级别。你很幸运地看到了Java的黄金时间,.NET/Mono的到来。尝试使用诸如“.NET到Mono的可移植性问题”之类的标题。我认为当前的标题是模糊的,似乎传达了完全不同的东西。顺便说一句,Xamarin不应该声称“代码一次,运行…”,因为它在一开始就试图避免Java风格的失败。我不知道是谁给了你这些信息,但他/她一定是在误导你。@LexLi:去Xamarin.com:“有了Xamarin,你的应用程序完全用C#编写,在iOS、Android、Windows和Mac上共享相同的代码。”对我来说,“共享相同的代码”意味着“代码一次,到处运行”。此外,mono site上的compatibility matrix声称“MVC4应该可以工作,异步控制器除外”,所以对我来说,这意味着:它应该开箱即用。也许Mono应该将它的语句改为:“MVC4应该可以工作,但您可能必须至少移植一些代码,MS dll提供的一些标准功能可能无法工作”。好吧,这是您自己的解释,当然不是Xamarin的官方声明。此外,Mono是一个开源项目,而不是Xamarin的商业产品。所以对于Xamarin的东西所说的,并不自动适用于Mono。然后对于像Mono这样的开源项目,您最好将“应该工作”理解为“应该工作,但您需要黑客”。在开源世界中,“开箱即用”很少是您可以假设的情况。是的,如果Mono的人可以用你的风格更新他们的维基,可能会更好地避免混乱。很抱歉反应太晚,谢谢你提供的信息,这可以解释一两件事本周晚些时候我会尝试你的建议。虽然我知道Mono不是100%兼容的。。。Xamarian广告声称:“代码一次,在bla-bla-bla上运行”是。。。我甚至不知道怎么称呼他们。还有一些奇怪的原因-无论我是否尝试在Monodevelop/Xamarian studio中创建空的Razor项目,都缺少dll-因此从一开始就必须努力测试简单的MVC4应用程序…:/Xamarin的说法对于BCL是正确的,因为BCL的兼容性更好。微软似乎开始与他们共享测试套件,以帮助提高兼容性。但这是一个持续的过程