首页 > 解决方案 > 找不到 MvxAndroidApplication

问题描述

我已经成功地遵循了 MvvmCross 的“入门”教程。但是,当我尝试在另一台计算机上创建一个新项目时,按照该教程作为指导,我无法编译它。“核心”项目(netstandard 库)很好;但是当我创建一个新的 Xamarin Android 项目并定义MainApplication(应该继承自MvxAndroidApplication<MvxAndroidSetup<App>, App>)时,找不到两个 Mvx 名称。

当然,我已经非常仔细地遵循了官方教程的所有说明,这意味着我已经安装了最新(6.0.1)版本的 MvvmCross 和 NuGet。我已经清理并重建了它。我什至探索了包含的 MvvmCross 程序集,但它完全缺少MvvmCross.Platforms应该包含我上面提到的两个类的命名空间。

在我看来,第二台计算机中缺少某些内容或配置错误似乎很明显。不过,我不知道是什么。引起我注意的一件事是,如果我尝试添加对它的引用,Mono.Android则会被列为版本 0.0.0.0。

我该如何解决这个问题?我应该检查我可能遗漏了什么?

标签: c#xamarin.androidmvvmcross

解决方案


我自己找到了解决方案。它涉及 Visual Studio 的一个未记录的要求和一个奇怪的行为(它当然有充分的理由,但我不知道它是什么),所以我把它留在这里以供参考。

要在 Xamarin Android 项目中使用 MvvmCross,您必须面向 (Mono)Android 8.1。我不确定这是否意味着“最新的 Android 版本”,或者 8.1 是否有什么特别之处。无论如何,MvvmCross 的 NuGet 包包含monoandroid81目标的相关 DLL:如果您的项目是为其他东西编译的(甚至是 Mono Android 8.0),那么 NuGet 将添加对 的引用netstandard20,并且该 DLL 当然不包含Platforms命名空间中的任何内容.

在项目设置中更改构建目标后,您至少必须卸载并重新加载项目。或者您可以关闭解决方案,但该项目确实是所需要的。此步骤对于在 Visual Studio 中获取正确的目标平台是必要的。要对其进行交叉检查,请打开Add reference窗口,并浏览“框架”列表:在程序集列表的顶部,您会找到一个标签,显示当前目标平台是什么。该标签必须显示“MonoAndroid 8.1”;如果没有,请检查项目设置,然后重新加载项目。


推荐阅读