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

Xamarin';s Android for Mono是否支持与Mono相同的.NET库?,mono,xamarin.android,xamarin,Mono,Xamarin.android,Xamarin,在高层,我的问题是: Linux平台上Mono支持的所有东西都是安卓支持的吗?安卓平台上的Xamarin? 更多信息:我正在调查将一个复杂的C#应用程序移植到Android平板电脑上的可能性,该应用程序的目标是.NETV3.5框架,我想确认我对Mono支持什么与Android设备支持什么的理解 Mono在解释Mono架构中支持哪些功能方面做得非常好。正如他们明确指出的,mono支持: NET4.0中的所有内容,WPF、WWF和有限WCF除外 然而,理解Xamarin for Android支持什

在高层,我的问题是:

Linux平台上Mono支持的所有东西都是安卓支持的吗?安卓平台上的Xamarin?

更多信息:我正在调查将一个复杂的C#应用程序移植到Android平板电脑上的可能性,该应用程序的目标是.NETV3.5框架,我想确认我对Mono支持什么与Android设备支持什么的理解

Mono在解释Mono架构中支持哪些功能方面做得非常好。正如他们明确指出的,mono支持:

NET4.0中的所有内容,WPF、WWF和有限WCF除外

然而,理解Xamarin for Android支持什么并不容易。我找到了这个,其中包括System.dll支持的名称空间的描述

Silverlight,以及以下名称空间中的类型:[详细信息]

上面提到System.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类库项目时会出现编译错误?System.Windows.Threading被视为WPF的一部分,因此无意使其在Xamarin.Android中工作

如果要直接引用.NET程序集,Xamarin.Android只能加载几个简单的.NET程序集(并带有警告:“引用的项目针对不同的框架族(.NETFramework)”)

WindowsBase.dll很有可能正在包装一些win32本机方法,因此不可能在Android环境下运行它


因此,坏消息是,您需要将代码移植到System.Threading类。

要查看支持或不支持的内容,您只需查看感谢Michal提供的信息。将来,我希望Xamarin在编译Android类库时添加编译时检查,以便在编译类库时遇到编译错误,而不是在Android应用程序中包含以前编译过的类库时