Xamarin Forms Android 这种类型的 collectionView 不支持从不同于调度程序线程的线程更改其 sourceCollection

Xamarin Forms Android This type of collectionView does not support changes to its sourceCollection from a thread different from the dispatcher thread

这是我在尝试存档我的应​​用程序以进行部署时遇到的错误。

此错误不会在任何其他时间出现。该项目在模拟器和设备上构建和运行没有问题。该错误的上下文或方向为零,不知道在哪里可以修复它。它也只是随机出现,上次我 built/archived(功能更改为零)没有发生此错误。

此存档与上一个存档的主要区别是 VS 2017 的较新版本。不记得以前的确切版本,但目前使用的是 15.9.4(稳定版)。

环顾互联网,我发现这个错误似乎与 ObservableCollection 相关,我的应用程序中可能有 10 个左右。不太确定在这里做什么,因为这以前从来都不是问题,而且我即将在最后期限和应用程序的结构中,我不适合开始进行功能更改。

编辑

我还清理并重建了我的解决方案,并删除了我的 xamarin 项目中的所有 bin/obj 文件夹。甚至尝试删除 .vs 文件夹,这有时会有所帮助。但是还是不行。

将尝试将 VS 更新到 15.9.5,看看它是否已在版本中修复。

编辑 2

将 VS 2017 更新到 15.9.5 没有任何区别。

编辑 3

我让我的同事尝试在他的机器上存档完全相同的项目 (运行 VS 2017: 5.9.3,并且存档对他来说很好。到目前为止,这是我们能够做到的唯一区别在我们的环境之间找到。

Leon Lu 的建议奏效了。我不是特别喜欢它,因为它花了很长时间,修复基本上可以将您恢复到基本安装(没有扩展或个性化)。大约需要 1.2 小时才能完成,但一旦完成,我就能够再次存档我的 android 应用程序。我猜 vs 在某个时候出了点问题,也许是在更新期间。没办法说。

我在使用 VS2017 15.9.9 时看到了同样的问题。即使是一周前可以存档的相同代码也会抛出上述错误。它似乎与解决方案中的本地数据有关。 "clear" 构建还不够。然而,手动删除本地 obj 和 bin 文件夹然后归档(构建是隐式完成的)解决了我的问题。

就我而言,关闭 Visual studio 并删除 .vs 隐藏文件夹即可。

它实际上修复了许多使用 Xamarin 的问题。

我遇到了另一个问题,我无法存档,因为构建过程会挂起并且永远不会结束。删除 .vs 文件夹也是如此。 https://github.com/xamarin/xamarin-android/issues/1760

我尝试了上面的所有想法,但没有任何一个始终可靠。
我发现 Microsoft 已向他们报告了该问题(请参阅下面的 link)。在花费大量时间后,我在下面的 link 中发布了一种解决此存档构建问题的方法。

与其他修复程序一样,它并不完全合乎逻辑,而且您认为没有任何效果,但我发现该过程是可重复的,这对我来说是个好消息,因为时间紧迫而且没有时间。

MS Visual Studio Developer Community Problem 507708

周六早上发布,表明确实需要紧急解决这个问题。希望对你也有帮助。

只需转到项目 属性,然后转到 Android 选项 -> Select 高级,然后将 Java 最大堆大小增加到 2G/3G -> 它正在运行对我来说。