我一直在Mac上探索在Xamarin Studio上使用MVVM Cross。我一直在YouTube上浏览N+1 days of MvvmCross的教程,我遇到了一个障碍,希望其他人有经验。
教程使用PCL和VS 2012,但由于我在Mac上,我必须使用Xamarin Studio。我理解PCL在Xamarin Studio中不受支持,所以我创建了一个基础C#项目,然后将这些库链接到一个Xamarin.Android项目。我已经阅读了很多MvvmCross帖子,包括this one,但未能找到解决方案。
项目构建成功并且似乎成功部署到模拟器,但我无法让应用程序在模拟器上运行。应用程序立即关闭,我收到的唯一错误是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是否足够稳定,可以在Xamarin Studio上用于Mac?有谁知道我的错误可能是什么,或者接下来要尝试什么?
我知道这是一个相当不明确的问题,但我希望我不是唯一一个体验这个问题的人。我试图尽可能描述,但如果有人需要更多信息,请告诉我。感谢。
答案 0 :(得分:5)
还有其他人经历过这个吗?
我见过没有人。
我知道Xamarin和MvvmCross都专注于Visual Studio集成和PC开发
对于Xamarin来说绝对不是这样 - 事实上(在我看来)反之亦然 - 我认为它们首先在Mac上运行'Xamarin Studio',而Visual Studio支持第二。
对于MvvmCross,我通常首先使用Visual Studio - 这主要是因为我需要使用Windows项目类型(Wpf,WindowsPhone,WindowsStore),因为我更喜欢使用PCL,因为Resharper拥有我的编码灵魂。
MvvmCross足够稳定,可以在Xamarin Studio上用于Mac吗?
这对我来说太客观了。我可以告诉你很多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文件夹中的程序集答案 1 :(得分:2)
我遇到了同样的问题。
我已经解决了将我的代码解决方案迁移到另一个新项目的问题。 PCL和项目链接组装没有问题。
我不知道为什么我的解决方案被打破了。我怀疑在.xaml和project选项中必须保持一致的包命名空间。
答案 2 :(得分:0)
我知道这是一个老问题,但由于关于空引用异常的原始问题没有真正的答案,所以我遇到了一个问题并且解决了相似的问题 - Xamarin.Forms app will not run on Android device。