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

时间:2013-05-06 22:06:00

标签: mono xamarin.android xamarin

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

Android平台上Android.Xamarin支持的Linux平台上Mono支持的所有内容是什么?

更多信息:我正在研究将面向.NET v3.5框架的复杂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提到System.Windows.Threading是在silverlight下,但如果我只创建一个新项目,这似乎没有意义。

这是一个例子:如果我打开一个新的单一项目并尝试访问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类库项目

1 个答案:

答案 0 :(得分:3)

System.Windows.Threading被视为WPF的一部分,所以无意让它在Xamarin.Android中运行。

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

WindowsBase.dll很有可能包含一些win32原生方法,因此无法在Android环境下运行它。

所以坏消息是您需要将代码移植到System.Threading类。

相关问题