2009-11-10 69 views
1

Mono中的System.Data是否已擴展爲包含額外的功能? 我試圖利用在Mono.Data.SqlExpressions爲單寫的SQL語法分析程序,但是當SqlExpressions命名空間中的所有類都被列入該項目仍然無法編譯,因爲在System.Data類不匹配。
例如,System.Data.DataColumn未定義PropertyChanged事件。 我需要使用Mono System.Data庫嗎? 當項目中包含Mono DataColumn類時,不會出現此編譯錯誤(它引用類如DataCategory,這些類在.Net框架中找不到)。Mono中的System.Data

另外,關於如何端口SQL分析器在單聲道到微軟的.Net框架的任何幫助,將不勝感激。我試圖下載源代碼並將缺少的庫添加到項目中,但這種方法看起來有缺陷。缺少依賴的數量似乎增加而不是解決問題。

回答

1

單試圖爲二進制和API與MS的實現兼容。這意味着除少數內部支持方法和類外,Mono公開的所有API都應該與MS .Net相匹配。這是爲了避免複雜化,就像人們假設存在一種方法一樣,因爲它在單聲道中編譯,然後畢竟在MS.Net上不起作用。

當新的代碼和功能在單聲道實現貢獻者它通常在一個單獨的程序和項目中。 Mono.Data顧名思義就是這樣一個「擴展」,因此您需要包含所有依賴程序集才能構建它。如果Mono.Data.dll及其代碼將在MS.Net上運行,或者不是它的問題,或者檢查文檔並對其進行測試。

至於你的第二個問題,我不能告訴你具體細節,但除非代碼必須在Windows上運行的具體說明資訊,將最有可能需要大量的工作來港。與任何API一樣,很多代碼不會暴露給公共接口,並且在移植代碼時需要解決實現的內部功能。我建議你花一些時間分析代碼的工作原理,然後嘗試通過在Mono代碼上刪除儘可能多的代碼來使它在MS.Net上運行。最後,如果代碼足夠兼容,您應該考慮使用編譯指令和#if!MONO pragmas修補Mono的源代碼,以便將問題節省給未來的用戶。

+0

謝謝你的回答。 – Opflash 2009-11-12 11:14:29