找不到 MvxAndroidApplication

MvxAndroidApplication could not be found

我已成功完成 MvvmCross 的 "getting started" 教程。但是,当我尝试在另一台计算机上创建一个新项目时,按照该教程作为指南,我无法编译它。 "Core" 项目(netstandard 库)没问题;但是当我创建一个新的 Xamarin Android 项目并定义 MainApplication(应该继承自 MvxAndroidApplication<MvxAndroidSetup<App>, App>)时,找不到这两个 Mvx 名称。

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

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

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

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

要在 Xamarin Android 项目中使用 MvvmCross,您必须以 (Mono)Android 8.1 为目标。 我不确定这是否转化为"the most recent Android version" 或者如果 8.1 有什么特别之处。无论如何,MvvmCross 的 NuGet 包包含 monoandroid81 目标的相关 DLL:如果您的项目是为其他东西编译的(甚至是 Mono Android 8.0),那么 NuGet 将添加对 [=11= 的引用],并且该 DLL 当然不包含 Platforms 命名空间中的任何内容。

在项目设置中更改构建目标后,您至少必须卸载并重新加载项目。或者您可以关闭解决方案,但项目确实是所需要的。 此步骤是必要的,以便在 Visual Studio 中获得正确的目标平台。要交叉检查它,请打开 Add reference window,然后浏览 "Framework" 列表:在汇编列表的顶部,您会找到一个标签,显示当前的目标平台是什么。该标签必须显示 "MonoAndroid 8.1";如果没有,请检查项目设置,然后重新加载项目。

这没有帮助,还有其他人知道如何解决这个问题吗?它发生在 MvvmCross 从 v5.6.3 更新到 v6.1.2 之后。 我将继承从 Setup.cs 更改为 MvxAppCompatApplication<MvxAppCompat<App>,App> 并且需要为此安装 MvvmCross.Droid.Support.V7.AppCompat nuget 包,但它给了我这个错误。