System.AggregateException:发生一个或多个错误---> MonoTouch.Design.Client.DesignerRemoteException

时间:2014-08-05 17:41:08

标签: ios xamarin.ios xamarin

我一直在为IOS设计故事板设计应用程序。没有代码,除了自动生成的代码之外。在Xamarin重新打开storyboard文件后,我收到了以下错误:

System.AggregateException: One or more errors occured ---> MonoTouch.Design.Client.DesignerRemoteException: System.ArgumentNullException: Argument cannot be null.
Parameter name: key
    at System.Collections.Generic.Dictionary`2[MonoTouch.UIKit.UIImage,System.String].set_Item (MonoTouch.UIKit.UIImage key, System.String value) in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:216
    at MonoTouch.Design.Server.ImageResourceManager.SetImage (System.String name, MonoTouch.UIKit.UIImage value) in /Users/builder/data/lanes/1089/7d45bbe2/source/md-addins/Xamarin.Designer.iOS/MonoTouch.Design.Server/ImageResourceManager.cs:79
    at MonoTouch.Design.Server.SessionController+<PostImageResource>c__AnonStorey3.<>m__0 () in /Users/builder/data/lanes/1089/7d45bbe2/source/md-addins/Xamarin.Designer.iOS/MonoTouch.Design.Server/SessionController.cs:167
    at MonoTouch.Design.NativeExtensions+<SafeInvokeOnMainThread>c__AnonStorey0.<>m__0 () in /Users/builder/data/lanes/1089/7d45bbe2/source/md-addins/Xamarin.Designer.iOS/MonoTouch.Design.Server/Util/NativeExtensions.cs:378
  at MonoTouch.Design.Client.ServerProcessConnection.SendRequest (MonoTouch.Design.CommandRequest req, Boolean throwIfNotRunning) [0x0007f] in /Users/builder/data/lanes/1089/7d45bbe2/source/md-addins/Xamarin.Designer.iOS/MonoTouch.Design.Client/Connection/ServerProcessConnection.cs:195 
  at MonoTouch.Design.Client.ServerProcessConnection.SendRequest[Object] (MonoTouch.Design.CommandRequest req, Boolean throwIfNotRunning) [0x00004] in /Users/builder/data/lanes/1089/7d45bbe2/source/md-addins/Xamarin.Designer.iOS/MonoTouch.Design.Client/Connection/ServerProcessConnection.cs:202 
  at MonoTouch.Design.Client.ServerProcessConnection.PostResources (MonoTouch.Design.DesignSession session, MonoTouch.Design.ImageResource[] resources) [0x0003f] in /Users/builder/data/lanes/1089/7d45bbe2/source/md-addins/Xamarin.Designer.iOS/MonoTouch.Design.Client/Connection/ServerProcessConnection.cs:132 
  at MonoTouch.Design.Client.IPhoneDesignerSession+<SendImageResources>c__AnonStorey13.<>m__1 () [0x00019] in /Users/builder/data/lanes/1089/7d45bbe2/source/md-addins/Xamarin.Designer.iOS/MonoTouch.Design.Client/IPhoneDesignerSession.cs:1329 
  at System.Threading.Tasks.TaskActionInvoker+FuncInvoke`1[System.Object].Invoke (System.Threading.Tasks.Task owner, System.Object state, System.Threading.Tasks.Task context) [0x00000] in /Volumes/build-root-ramdisk/mono-3.6.0/mcs/class/corlib/System.Threading.Tasks/TaskActionInvoker.cs:242 
  at System.Threading.Tasks.Task.InnerInvoke () [0x00031] in /Volumes/build-root-ramdisk/mono-3.6.0/mcs/class/corlib/System.Threading.Tasks/Task.cs:548 
  at System.Threading.Tasks.Task.ThreadStart () [0x000d0] in /Volumes/build-root-ramdisk/mono-3.6.0/mcs/class/corlib/System.Threading.Tasks/Task.cs:438 

任何人都可以帮忙弄明白这意味着什么吗?

2 个答案:

答案 0 :(得分:0)

据我所知,错误是由以下原因引起的:

iOS Designer打开StoryBoard并尝试解析内部的XML。 在解析它时,调用MonoTouch.Design.Server(它可能针对Xcode运行代码以呈现XML)。这样做时会遇到包含UIImage的ViewElement。因此,它尝试使用存储在Dictionary中的参数(使用相同的XML填充)来设置UIImage。当它试图访问该字典以获取UIImage的参数时,它会为该键放入一个“null”,这会导致您的错误。

现在我不知道你的故事板中到底是什么导致了这个错误,因为你还没有提供有问题的Storyboard文件(如果你有的话,我也不能保证我能找到那个错误),但你可以尝试一些以下是尝试解决问题的方法。

  • 尝试在Xcode中打开Storyboard而不是iOS Designer。它有时会设法修复iOS Designer无法处理的损坏的故事板。
  • 在XML视图中打开Storyboard,并查看其中包含UIImages的元素。试着看看他们中是否有人有“奇怪”的名字,来源,价值等等。
  • 在此处发布故事板,看看是否有其他人可以发现错误

答案 1 :(得分:0)

我遇到了类似的情况,因为错误消息的启动与原始帖子完全相同。我无法在Visual Studio 2015和Xamarin Studio 5.10.3(build 51)

中打开故事板

在比较.csproj文件的更改后花了一些时间我发现ipad的图像对我造成了这个问题。我不知道原帖的实际原因,但对我来说,我有一张图像用作ipad的app徽标,我把它命名为“imagename@ipad.png”。事实证明,即使XCode 7完美地打开了故事板,这个设计师仍然感到非常震惊。

最后我将图像重命名为“imagename~iPad.png”并完成了这一操作。 VS 2015和XS 5.10.3都很乐意打开故事板!

以下Xamarin处理图像的文档

https://developer.xamarin.com/guides/ios/application_fundamentals/working_with_images/sizes-and-filenames/