【问题标题】:Does Xamarin's Android for Mono support same .NET libraries as Mono?Xamarin 的 Android for Mono 是否支持与 Mono 相同的 .NET 库?
【发布时间】:2013-05-06 22:05:59
【问题描述】:

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

Linux 平台上 Mono 支持的所有内容都被 Android 平台上的 Android.Xamarin 支持吗?

更多信息:我正在研究将针对 .NET v3.5 框架的复杂 C# 应用程序移植到 Android 平板电脑上的可能性,并想确认我对 Mono 支持的内容与安卓设备。

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 类库项目

【问题讨论】:

标签: mono xamarin.android xamarin


【解决方案1】:

System.Windows.Threading 被视为 WPF 的一部分,因此无意使其在 Xamarin.Android 中工作。

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

WindowsBase.dll也有很大可能是封装了一些win32的native方法,所以在Android环境下是不可能运行的。

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

【讨论】:

  • 感谢米哈尔的信息。将来,我希望 Xamarin 在编译 Android 类库时添加编译时检查,以便在编译库本身时遇到编译错误,而不是在 Android 应用程序中包含以前编译的类库时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多