2011-09-21 2 views
2

작업중인 WinForms 앱의 mainform을로드 할 때 익숙한 예외가 발생했습니다. "디자이너를로드하기 전에 데이터 손실을 방지하려면 다음 오류를 해결해야합니다 "오류. 다음과 같이 스택 트레이스는 다음과 같습니다VS2010에서 디자이너 예외 소스를 찾는 데 문제가 발생했습니다.

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 덕분에 오류를 수정하는 방법에 대한 아이디어가 있습니다. 문제는 예외가 throw 된 행을 찾을 수 없다는 것입니다. 일반적으로 나는 Error List window을 사용하여 예외를 탐색하지만 오류가 없다고 말합니다. 문제가되는 줄을 어떻게 찾을 수 있는지에 대한 아이디어가 있습니까?

답변

2

일반적으로 이것은 DI 컨테이너 또는 이와 유사한 방법을 사용하는 양식에서 호스팅되는 사용자 정의 컨트롤과 관련이 있지만 디자이너가 제공하는 호출 스택에서 소스를 결정하기 란 때로는 어렵다고 말합니다.

  1. 다음,
  2. 을 직접 양식에 호스팅되는 사용자 컨트롤의 목록을 확인하십시오 : 당신이 컨트롤을 많이 호스팅하는 경우 컨트롤이 당신이 할 수 각각에 다이빙을하지 않고 문제가 발생하는 알아낼
  3. 한 디자이너를 죽이고 볼 수있는 폼에 다음
  4. 드롭 목록에있는 각 사용자 정의 컨트롤을 새 임시 폼을 만들고
관련 문제