在高层次上,我的问题是:
Android 平台上的 Android.Xamarin 是否支持 Mono 在 Linux 平台上支持的所有内容?
更多信息:我正在研究将针对 .NET v3.5 框架的复杂 C# 应用程序移植到 Android 平板电脑上的可能性,并希望确认我对 Mono 中支持的内容与 Android 设备上支持的内容的理解。
Mono 的兼容性列表很好地解释了 Mono 架构中支持的功能。正如他们明确指出的那样,单声道支持:
.NET 4.0 中的所有内容,除了 WPF、WWF 和有限的 WCF。
但是,了解 Xamarin for Android 中支持的内容并不容易。我在 Assemblies 上找到了这个主题,其中包括对 System.dll 下支持的命名空间的描述
Silverlight,以及来自以下命名空间的类型:[更多列出]...
silverlight 参考提到 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 类库项目