none
vs2010에서 윈폼 디자이너가 로드되지 않습니다. RRS feed

  • 질문

  • 총 3개의 윈폼 프로젝트가 있습니다.

    1.UserControl1 (c++/cli)

    2.UserControl1.Design (c#)

    3.Application (c#)

    Application에서 1번과 2번을 참조하여 Application에 있는 Form1에서 UserControl1을 사용하고 있습니다.

    UserControl1의 코드를 수정하여 컴파일후 Application의 Form1에서 디자이너가 아래처럼 예외를 발생하면서 로드 되지 않습니다.

    vs2010을 종료하고 솔루션을 다시 로드해야 겨우 되더군요. 방법이 없나요?

    ps : vs2008에서는 잘되던데.

    예외 메세지

    위치: VSLangProj.Reference.get_Path()
    위치: Microsoft.VisualStudio.Design.VSTypeResolutionService.AddProjectDependencies(Project project)
    위치: Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.get_Assembly()
    위치: Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.Search(String fullName, String typeName, Boolean ignoreTypeCase, Boolean allowPrivate, Assembly& assembly, String description)
    위치: Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.Search(String fullName, String typeName, Boolean ignoreTypeCase, Assembly& assembly, String description)
    위치: Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchProjectEntries(AssemblyName assemblyName, String typeName, Boolean ignoreTypeCase, Assembly& assembly)
    위치: Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchEntries(AssemblyName assemblyName, String typeName, Boolean ignoreCase, Assembly& assembly, ReferenceType refType)
    위치: Microsoft.VisualStudio.Design.VSTypeResolutionService.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, ReferenceType refType)
    위치: Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
    위치: Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name)
    위치: System.ComponentModel.Design.Serialization.DesignerSerializationManager.GetRuntimeType(String typeName)
    위치: System.ComponentModel.Design.Serialization.DesignerSerializationManager.GetType(String typeName)
    위치: System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.GetType(String typeName)
    위치: System.ComponentModel.Design.Serialization.CodeDomSerializerBase.GetType(IDesignerSerializationManager manager, String name, Dictionary`2 names)
    위치: System.ComponentModel.Design.Serialization.CodeDomSerializerBase.FillStatementTable(IDesignerSerializationManager manager, IDictionary table, Dictionary`2 names, CodeStatementCollection statements, String className)
    위치: System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
    위치: System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
    위치: Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
    위치: Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)

    2012년 5월 31일 목요일 오전 2:36

답변

  • 해당 컨트롤의 cs파일에서 가장 먼저 쓰여지는 클래스가 Form 혹은 UserControl 클래스 여야 디자이너에서 정상적으로 로드가 됩니다.

    체크해보세요 ^^

    2012년 5월 31일 목요일 오전 9:14
  • 일단 스스로 해결했습니다.

    질문사항에 정보가 좀 부족했는데

    1.UserControl(c++/cli)가 어셈블리가 아닌 다른 정적 라이브러리(.lib) 프로젝트를 참조목록에 포함하고 있습니다.

    이렇게 한 이유는 링커->입력->추가 종속성 란에 직접 .lib 파일을 명시하지 않아도 컴파일시에 자동으로 링크가 되더라고요.

    그런데 이로 인해 위와 같은 예외가 발생하는것 같습니다.

    예외메세지 2번째 메소드 이름을 보면

    위치: Microsoft.VisualStudio.Design.VSTypeResolutionService.AddProjectDependencies(Project project)

    아마도 어셈블리가 아닌 프로젝트를 참조하고 있어서 그런것 같습니다.

    어셈블리가 아닌 프로젝트를 참조에서 제거하니 정상적으로 디자이너가 잘 로드 됩니다.


    • 편집됨 s2quake 2012년 6월 1일 금요일 오전 3:15
    • 답변으로 표시됨 Jina LeeModerator 2012년 6월 4일 월요일 오후 12:55
    2012년 6월 1일 금요일 오전 3:04

모든 응답

  • 해당 컨트롤의 cs파일에서 가장 먼저 쓰여지는 클래스가 Form 혹은 UserControl 클래스 여야 디자이너에서 정상적으로 로드가 됩니다.

    체크해보세요 ^^

    2012년 5월 31일 목요일 오전 9:14
  • 일단 스스로 해결했습니다.

    질문사항에 정보가 좀 부족했는데

    1.UserControl(c++/cli)가 어셈블리가 아닌 다른 정적 라이브러리(.lib) 프로젝트를 참조목록에 포함하고 있습니다.

    이렇게 한 이유는 링커->입력->추가 종속성 란에 직접 .lib 파일을 명시하지 않아도 컴파일시에 자동으로 링크가 되더라고요.

    그런데 이로 인해 위와 같은 예외가 발생하는것 같습니다.

    예외메세지 2번째 메소드 이름을 보면

    위치: Microsoft.VisualStudio.Design.VSTypeResolutionService.AddProjectDependencies(Project project)

    아마도 어셈블리가 아닌 프로젝트를 참조하고 있어서 그런것 같습니다.

    어셈블리가 아닌 프로젝트를 참조에서 제거하니 정상적으로 디자이너가 잘 로드 됩니다.


    • 편집됨 s2quake 2012년 6월 1일 금요일 오전 3:15
    • 답변으로 표시됨 Jina LeeModerator 2012년 6월 4일 월요일 오후 12:55
    2012년 6월 1일 금요일 오전 3:04