Xamarin的Android for Mono是否支持与Mono相同的.NET库?



在高层次上,我的问题是:

是在Android支持的Linux平台上Mono支持的所有内容。Android平台上的Xamarin ?

更多信息:我正在研究将一个复杂的c#应用程序移植到Android平板电脑上的可能性,并且想确认我对Mono和Android设备支持的理解。

Mono的兼容性列表很好地解释了Mono架构中支持的特性。正如它们明确指出的那样,mono支持:

. net 4.0中的所有内容,除了WPF, WWF和有限的WCF。

然而,了解Xamarin在Android中支持什么并不容易。我在程序集上找到了这个主题,其中包括对System.dll

下支持的名称空间的描述。

Silverlight,加上以下命名空间的类型:[更多列出]…

silverlight参考提到System.Windows.Threading在silverlight下,但如果我只是创建一个新项目,这似乎没有意义。

这里有一个例子:如果我打开一个新的mono项目并试图访问System.Windows。线程,我不能访问它,除非我包括对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)MSBuildXamarinAndroidXamarin.Android.Common.targets   720 2   AndoidCtmConnectionTester

所以我的后续问题是:为什么当从Android应用程序项目引用DLL时,我会得到编译错误,而不是Android类库项目

System.Windows。线程被认为是WPF的一部分,所以不打算让它在Xamarin.Android.

如果你想直接引用。net程序集,Xamarin。Android只能加载几个简单的。net程序集(并警告:"所引用的项目是针对不同的框架族(.NET framework)")。

还有一个很大的机会,WindowsBase.dll包装一些win32本地方法,所以不可能在Android环境下运行。

所以坏消息是你需要把你的代码移植到System上。线程类。

最新更新