c# - 找不到 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。
我该如何解决这个问题?我应该检查我可能遗漏了什么?
解决方案
我自己找到了解决方案。它涉及 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”;如果没有,请检查项目设置,然后重新加载项目。
推荐阅读
- scala - 在 Scala 中第一次出现项目时拆分列表的最佳方法是什么?
- python - TypeError:描述符“附加”需要一个“列表”对象但收到一个“numpy.float64”
- mysql - 可以从单个 CASE 语句中选择多个列吗?
- c++ - 使用初始化列表时发生堆损坏错误
- java - 由于消息传递异常,尝试使用 javamail 运行 .jar 文件时出错
- sql - 查找同一系列中多次出现的最早和最晚日期
- node.js - 如何使用 fs.writeFile 添加新行?
- python-3.x - 使用 Pandas 和 Quandl 的多个字段
- python-3.x - 以下代码在 Mac Os X 中运行完美,但在 windows 和 raspberry os 中出现错误
- python-3.x - 如何在 Python 中附加单个字典键 (1_key : [N_values]) 的值列表?