簡體   English   中英

有沒有辦法編寫獨立於系統的MVC應用程序?

[英]Is there any way to write system independent MVC applications?

在過去的兩天里,我嘗試在Mono上運行MVC4示例互聯網應用程序(在VisualStudio 2010內部創建的應用程序:File-> New-> MVC4 webApllication-> Internet應用程序(帶Razor)),以便檢查我是否可以使用Linux來托管任何真正的MVC應用程序。

起初 - 我嘗試使用Xamarian Studio和.NET運行它 - 沒有問題:它顯示,啟動頁面,我可以注冊,登錄 - >很棒。

然后我只是從.NET切換到Mono,一切都崩潰了。

  1. 首先它抱怨沒找到log4net - >安裝最新的log4net解決了這個問題,但為什么它首先抱怨?
  2. 然后,EntityFramework有一些錯誤 - >更新EF修復了這個問題,但是,再次 - 為什么它不起作用?
  3. 然后我看到了啟動頁面,但嘗試注冊拋出:

    System.MissingMemberException延遲初始化的類型沒有公共的無參數構造函數。

當我刷新頁面時,上面的錯誤消失了但是當我嘗試注冊時我得到了另一個:

System.InvalidOperationException要調用此方法,“Membership.Provider”屬性必須是“ExtendedMembershipProvider”的實例。

我放棄 :/

根據這個:

http://mono-project.com/Compatibility

MVC4是兼容的,因為不使用異步控制器...所以問題是 - 我在這里做錯了什么或Mono兼容性是一個大謊言?

請允許我補充一點,通過兼容性,我的意思是:使用相同的代碼,不做任何改動(這是它在Java或QT中的工作原理)。

提前感謝您的意見。

最好的祝福。

關於為什么log4net和EntityFramework導致問題的第1和第2點,我認為這兩個框架(.NET和Mono)有不同的程序集。 這將是利用框架功能以及構建和優化.NET和Mono的方式的情況。

對於第3點,單聲道不能識別像SimpleMembership這樣的聲音。 試試這個: http//goo.gl/hPnzjV

在放棄之前,我會在社區論壇上給單聲道團隊/帖子發消息......我聽說他們反應靈敏。 希望這可以幫助!

我不是來自Mono團隊,但下面是我的經驗以及我對如何從.NET遷移到Mono以及為什么會出現問題的觀察。

  • Microsoft不構建ASP.NET MVC或EF以支持Mono。 因此,Microsoft的原始程序集(在VS中本地復制)將無法按照您希望的Mono工作。 通常Mono在GAC中提供相應的修補程序集(具有相同的名稱),因此請使用sudo find / | grep name_of_assembly sudo find / | grep name_of_assembly首先檢查GAC中已存在哪些程序集,然后從Mono / Linux上的部署文件夾中刪除它們。 我們確實看到Microsoft和Xamarin在兼容性方面進行了合作,但是他們需要時間來完成所有工作。

  • 不要在Windows上使用Xamarin Studio來測試。 不,這仍然不可靠,因為它仍然使用.NET。 你需要在Linux上使用MonoDevelop。

現在提出問題,1和2是顯而易見的。 Mono在GAC中附帶了一個log4net版本,但它並不是最新版本。 因此,如果您願意,可以使用您自己的副本。 EF 6是微軟的第一個開源版本,因此使用最新版本可以減少Mono上的問題。

對於3,我認為你將Microsoft的MVC 4程序集復制到Mono / Linux。 請刪除需要修補的內容,然后在GAC中使用Mono的內容。

今天不要指望Java或Qt級別的兼容性,因為Java花了很多年才達到這個水平。 你太幸運了,看不到Java的黃金時間,而.NET / Mono即將到來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM