8

我一直在探索在Mac 上的 Xamarin Studio 上使用MVVM Cross 。我已经在 YouTube 上浏览了N+1 天的 MvvmCross教程,我遇到了一个希望其他人经历过的障碍。

教程使用 PCL 和 VS 2012,但由于我使用的是 Mac,所以我必须使用 Xamarin Studio。我了解 Xamarin Studio 不支持 PCL,因此我创建了一个基本 C# 项目,然后将库链接到 Xamarin.Android 项目。我已经阅读了很多 MvvmCross 帖子,包括这篇文章,但还没有找到解决方案。

该项目成功构建并似乎成功部署到模拟器,但我无法让应用程序在模拟器上运行。该应用程序立即关闭,我收到的唯一错误是 Xamarin Studio 的应用程序输出中的以下非描述性消息。

[monodroid-gc] GREF GC Threshold: 1800
[mono] Stacktrace:
[mono] 
[mono] 
[mono] Unhandled Exception:
[mono] System.NullReferenceException: Object reference not set to an instance of an object
[mono] [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object

我设置了多个断点,但无法触发任何断点,看来错误是在我的代码运行之前发生的。我下载了项目的示例代码并成功运行,所以我逐行检查错误但没有成功(我什至用示例中的那些文件替换了我的类文件。我已经确认所有的 DLL 都是正确。我正在使用来自https://github.com/slodge/MvvmCross-Binaries的预编译库。

我真的不确定下一步该去哪里确定这个错误的原因。有没有其他人经历过这个?我知道 Xamarin 和 MvvmCross 都专注于 Visual Studio 集成和 PC 开发;MvvmCross 是否足够稳定,可以在 Mac 的 Xamarin Studio 上使用?有谁知道我的错误可能是什么,或者接下来要尝试什么?

我知道这是一个相当不确定的问题,但我希望我不是唯一一个遇到这种情况的人。我试图尽可能地进行描述,但如果有人需要更多信息,请告诉我。谢谢。

4

3 回答 3

5

有没有其他人经历过这个?

没有人见过。

我知道 Xamarin 和 MvvmCross 都专注于 Visual Studio 集成和 PC 开发

这对于 Xamarin 来说绝对不是真的——事实上(在我看来)反过来是真的——我认为他们首先使用“Mac 上的 Xamarin Studio”,其次才是 Visual Studio 支持。

对于 MvvmCross,我通常首先使用 Visual Studio——这主要是因为我需要使用 Windows 项目类型(Wpf、WindowsPhone、WindowsStore),因为我更喜欢使用 PCL,并且因为 Resharper 拥有我的编码灵魂。

MvvmCross 是否足够稳定,可以在 Mac 的 Xamarin Studio 上使用?

这是一个太主观的问题,我无法回答。我可以告诉你很多 Mac 用户都在使用它……而且没有尝试过的人转向我并告诉我 MvvmCross 不够稳定。

Xamarin PCL 支持的情况正在发展——当前的支持似乎随着当前的每个版本而发生一些变化,并且很快就会有一个大的 PCL 版本发布。这安排在现在的任何一天——所以我绝对不能声称 PCL 的情况目前是稳定的。

NuGet2.5 支持也在发生变化 - 请参阅https://github.com/mrward/monodevelop-nuget-addin/issues/13 - 我不知道它何时会完全可用或知道 Mac 上的 PCL,但在至少努力已经开始。

注意:如果需要,您始终可以使用 Xamarin 项目类型和文件链接而不是 PCL 项目类型。仅仅因为 MvvmCross 在内部使用 PCL 并不意味着您必须这样做。

有谁知道我的错误可能是什么

我不知道您的错误是什么-这NullReferenceException不是最详细的错误:(您可能可以从 logcat 获得更多跟踪?除此之外,Xamarin 论坛或支持可能会提供帮助。

接下来要尝试什么?

我在没有 Nuget 的情况下纯粹在 Mac 上录制了今天的 N+1。

目前正在上传到:

这是我在 Mac 上使用 MvvmCross 和 PCL 开发第一个 Android 和 iOS 项目的“全面”现场演示。显然,您可以看到 Xamarin Studio intellisense 和 Android 模拟器调试等问题(请注意,这些调试器/模拟器问题与 MvvmCross 和 PCL 无关!)

我相信这也表明现在在 Mac 上,Xamarin.iOS 比 xamarin.android 对 mvvmcross/pcl 更友好 - 但两者都可以使用。

请注意,对于此演示,我使用https://github.com/slodge/mvvmCross-binaries/中 VS 文件夹中的程序集

于 2013-05-23T10:08:13.980 回答
2

我一直有同样的问题。

我已经解决了将我的代码解决方案迁移到另一个新项目的问题。PCL 和项目链接组装没有问题。

我不知道为什么我的解决方案被破坏了。我怀疑包命名空间必须在 .xaml 和项目选项中保持一致。

于 2013-05-30T07:15:29.720 回答
0

我知道这是一个老问题,但由于关于空引用异常的原始问题没有真正的答案,所以我遇到并解决了一个感觉非常相似的问题 - Xamarin.Forms app will not run on Android device

于 2014-09-04T19:33:36.993 回答