在很高的層面上,我的問題是:Xamarin的Android for Mono是否支持與Mono相同的.NET庫?
Mono是否支持Android平臺上Android.Xamarin支持的Linux平臺上的所有功能?
更多信息:我正在研究將一個複雜的C#應用程序移植到Android平板電腦上的可能性,並且希望確認我對Mono支持的內容和支持的內容的理解在Android設備上。
Mono的Compatibility list在解釋Mono架構中支持哪些功能方面做得相當不錯。正如他們清楚說明的那樣,單聲道支持:
.NET 4.0中除WPF,WWF和有限WCF之外的所有內容。
但是,理解Xamarin for Android所支持的內容並不容易。我發現這個topic on Assemblies,其包括System.dll中
下支持的Silverlight的命名空間的說明,加上類型的數據從以下命名空間:[更多的上市] ...
的silverlight reference提到系統.Windows.Threading是在silverlight下,但如果我只是創建一個新項目,這似乎沒有意義。
下面是一個例子:如果我打開一個新的mono項目並嘗試訪問System.Windows.Threading,除非包含對WindowsBase.dll的引用,否則我無法訪問它。此外,我可以只有成功地從一個「Android類庫」項目中引用WindowsBase.dll - 如果我嘗試創建一個「Android應用程序」項目並嘗試引用WindowsBase.dll我收到一個神祕的編譯錯誤,粘貼在下面。
Error 2 Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'WindowsBase.dll'
at Xamarin.Android.Tuner.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1 assemblies, AssemblyDefinition assembly)
at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1 assemblies, AssemblyDefinition assembly)
at Xamarin.Android.Tasks.ResolveAssemblies.Execute() C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets 720 2 AndoidCtmConnectionTester
所以我的跟進問題是:爲什麼從Android應用程序項目引用一個DLL時,我會得到一個編譯錯誤,而不是一個Android類庫項目
要查看是否支持,您可以簡單地檢查http://androidapi.xamarin.com/ – 2013-05-07 02:29:39