MVVM Cross在Mac上支持Xamarin Studio

8
我一直在探索在Mac上使用Xamarin Studio的MVVM Cross。我一直在观看N+1天MvvmCross的YouTube教程,并遇到了一个问题,希望其他人也有过类似的经历。
教程使用PCL和VS 2012,但由于我在Mac上,所以必须使用Xamarin Studio。我知道Xamarin Studio不支持PCL,因此我创建了一个基本的C#项目,然后将库链接到了Xamarin.Android项目。我已经阅读了很多MvvmCross文章,包括this one,但还没有找到解决方案。
该项目可以成功构建并似乎成功部署到模拟器,但我无法使应用程序在模拟器上运行。应用程序立即关闭,而我收到的唯一错误是Xamarin Studio的Application Output中的以下非描述性消息。
[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上使用稳定吗?有人知道我的错误可能是什么,或者接下来该尝试什么吗?我知道这是一个相当模糊的问题,但我希望我不是唯一遇到这个问题的人。如果有人需要更多信息,请告诉我。谢谢。

你找到那个问题的解决方案了吗?我和你情况一样。 - Luigi Saggese
不,我还没有找到解决这个特定问题的方法。我甚至仍然不确定是什么原因导致了它,因为我的另一个项目运行良好。最终我转向使用PCLs。 - Matthew
尝试在另一个项目中重新加载所有文件,并检查问题是否仍然存在。我和你有同样的问题,这个方法对我有用。 - Luigi Saggese
3个回答

5

还有其他人经历过这个问题吗?

没有我见过的人。

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

对于Xamarin而言,这显然是不正确的——事实上(我个人认为)逆是真的——我认为他们首先注重“Mac上的Xamarin Studio”,其次才是支持Visual Studio。

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

MvvmCross在Xamarin Studio for a Mac上足够稳定吗?

这个问题太主观了,我无法回答。我可以告诉你许多Mac用户都在使用它...... 但尝试过的人再也没有向我反馈MvvmCross不够稳定的情况。

Xamarin PCL支持的情况正在演变——目前每个版本的支持似乎都有所变化,并且即将推出一个重大的PCL版本。这已进入倒计时阶段,所以我肯定不能声称PCL的情况当前是稳定的。

NuGet 2.5支持情况也在发生变化——请参见https://github.com/mrward/monodevelop-nuget-addin/issues/13——我不知道这个功能何时会完全可用或者什么时候可以在Mac上使用PCLs,但至少已经开始努力了。

注意:如果你愿意,你可以始终使用Xamarin项目类型和文件链接代替PCL项目类型。MvvmCross内部使用PCLs并不意味着你必须这样做。

有人知道我的错误可能是什么吗?

我不知道你的错误是什么——那个NullReferenceException并不是最详细的错误 :( 你可能能从logcat获取更多信息?其他方面,Xamarin论坛或者支持可能能够提供帮助。

接下来该尝试什么?

我今天完全在Mac上录制了N+1而没有使用Nuget。

这正在上传到:

这是一个“毛病一箩筐”的实时演示,我在Mac上使用MvvmCross和PCLs开发第一个Android和iOS项目。显然,您可以看到一些问题,比如Xamarin Studio智能感知和Android模拟器调试(请注意,这些调试器/模拟器问题与MvvmCross和PCLs无关!)
我相信,现在在Mac上,Xamarin.iOS比xamarin.android更加友好于mvvmcross/pcl - 但两者都可以使用。
请注意,对于此演示,我使用https://github.com/slodge/mvvmCross-binaries/中VS文件夹中的程序集。

非常感谢您的快速回复。我对您能够提供快速响应印象深刻。我将继续尝试使其工作,因为我真的很有兴趣使用Mvvm方法。根据您的回复,似乎我遇到的没有根本性问题。我会查看您提到的一些链接,看看我错过了什么。再次感谢您的回复。 - Matthew
在您的GitHub页面上,您请求帮助文档。显然我不熟悉Mvx,但是如果我花一些时间学习,我可以提供任何有关文档的帮助吗? - Matthew
在那个 Github 问题上发帖 - Johannes(或其他人)会回答。 - Stuart
现在已经过去了一年...所展示的解决方案仍然是在 Mac 上使用 MvvmCross 的“正确”方式吗?您暗示 Xamarin 会提供更好的支持;这是否已经实现了? - Joe Strout

2

我遇到了同样的问题。

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

我不知道为什么我的解决方案会出问题。我怀疑与包命名空间有关,必须在.xaml和项目选项中保持一致。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接