当加载我正在处理的WinForms应用程序的mainform时,我遇到了一个熟悉的异常:“为了防止在加载设计器之前可能丢失数据,必须解决以下错误”错误。堆栈跟踪如下:
Object reference not set to an instance of an object.
Instances of this error (4)
1. Hide Call Stack
at System.ComponentModel.ReflectPropertyDescriptor.SetValue(Object component, Object value)
at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkPropertyDescriptor.SetValue(Object component, Object value)
at System.Windows.Forms.Design.ControlDesigner.CanResetSizePropertyDescriptor.SetValue(Object component, Object value)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializePropertyAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement, CodePropertyReferenceExpression propertyReferenceEx, Boolean reportError)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)
我知道是什么导致了这个错误 - 在MainForm的某处埋有四行,这些行引用了一个在设计时不存在的图像对象。由于this post at MSDN,我甚至知道如何修复错误。麻烦的是,我找不到抛出异常的行。通常情况下,我会使用Error List window导航到异常,但它表示没有错误。关于如何找到违规行的任何想法?
答案 0 :(得分:2)
我通常发现这与托管在表单上的用户控件有关,该用户控件依赖于DI容器或类似容器,但正如您所说,有时很难从设计器提供的调用堆栈中确定源代码。如果您正在托管许多控件,要确定哪些控件导致问题而不是潜入每个控件,您可以: