Visual Studio Windows窗体设计器错误:“框架内容的构建失败。”

时间:2018-10-15 08:34:44

标签: c# visual-studio windows-forms-designer

在我的UserControl中添加了Form之后,它突然开始产生此错误:

  

对COM组件的调用已返回错误HRESULT E_FAIL

所以我四处搜寻,发现它与缓存有关。因此,我从解决方案中删除了suo文件。现在它会产生此错误:

  

未指定的错误(HRESULT的异常:0x80004005(E_FAIL))

我也用Google搜索了一下,发现我应该阅读ActivityLog.xml中的%appdata%\Microsoft\VisualStudio的内容。它以以下消息开头:

  

框架内容的构建失败。

我再也找不到解决方法了。

这是该日志中的完整错误:

  

框架内容的构建失败。帧标识符:   ST:0:0:{31fc2115-5126-4a87-b2f7-77eaab65048b}帧标题:异常   详细信息:System.ArgumentNullException:参数名称:protocolHandler   在   Microsoft.XamlDiagnostics.UI.LivePropertyExplorer.Model.PropertyExplorerModel..ctor(IProtocolHandler   protocolHandler,IActiveElementTracker跟踪器,ITelemetryLogger   telemetryLogger)在   Microsoft.XamlDiagnostics.Model.XamlDiagnosticsTool.GetPropertyExplorerModel(IServiceProvider   serviceProvider)   Microsoft.XamlDiagnostics.Model.XamlDiagnosticsTool.CreatePropertyExplorer(IServiceProvider   serviceProvider,ResourceDictionary themeDictionary,UIElement   searchContentControl)   Microsoft.VisualStudio.ClientDiagnostics.XamlDiagnostics.PropertyExplorerToolWindow.GetContent()   在   Microsoft.VisualStudio.ClientDiagnostics.XamlDiagnostics.XamlDiagnosticsToolWindowBase.ShowContent()   在   Microsoft.VisualStudio.ClientDiagnostics.XamlDiagnostics.XamlDiagnosticsToolWindowBase.Initialize()   在   Microsoft.VisualStudio.Shell.WindowPane.InternalSetSite(IServiceProvider   p)在   Microsoft.VisualStudio.Shell.WindowPane.Microsoft.VisualStudio.Shell.Interop.IVsWindowPane.SetSite(IServiceProvider   psp)在   Microsoft.VisualStudio.Shell.WindowPane.Microsoft.VisualStudio.Shell.Interop.IVsUIElementPane.SetUIElementSite(IServiceProvider   p)在   Microsoft.VisualStudio.Platform.WindowManagement.UIElementDocumentObject.SetSite(DocumentObjectSite   网站)   Microsoft.VisualStudio.Platform.WindowManagement.DocumentObjectSite.InitializeDocumentObject(Object   punkView)   Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService.CreateContentPane(FrameMoniker   frameMoniker,布尔值isDocument,字符串lpstrMkDoc,UInt32   eCreateWindowFlags,对象punkView,对象punkData,IServiceProvider   pServiceProvider,IVsUIHierarchy pUIHierarchy,UInt32 vsid,Guid   rguidCmdUI,ViewGroup父级,IVsWindowFrame和ppWindowFrame),位于   Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService.CreateContentPane(String   pszName,Int32 fDockViewOn,Int32 fDocument,字符串lpstrMkDoc,UInt32   eCreateWindowFlags,UInt32 dwToolWinId,对象punkView,对象   punkData,IServiceProvider,pServiceProvider,IVsUIHierarchy   pUIHierarchy,UInt32 vsid,Int32&pfDefaultPosition,Guid&rguidCmdUI,   IVsWindowFrame和ppWindowFrame)   System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32   errorCode,IntPtr errorInfo)   Microsoft.VisualStudio.Shell.Package.CreateToolWindow(Type   toolWindowType,Int32 id,UInt32标志)   Microsoft.VisualStudio.Shell.Package.CreateToolWindow(Type   toolWindowType,Int32 id,ProvideToolWindowAttribute工具)位于   Microsoft.VisualStudio.Shell.Package.FindToolWindow(Type   toolWindowType,Int32 id,布尔值创建,ProvideToolWindowAttribute   Microsoft.VisualStudio.Shell.Package.CreateToolWindow(Guid&   toolWindowType,Int32 id)在   Microsoft.VisualStudio.Shell.Package.Microsoft.VisualStudio.Shell.Interop.IVsToolWindowFactory.CreateToolWindow(Guid&   toolWindowType,UInt32 ID)位于   Microsoft.VisualStudio.Platform.WindowManagement.WindowFrame.ConstructContent()

这是怎么回事? Construction of frame content failed是什么意思?

1 个答案:

答案 0 :(得分:0)

感谢Caius,我设法找到了问题所在。由于与Form有关的错误,设计者无法渲染UserControl。我查看了designer.cs文件,发现一条警告,指出[path]中的UserControl [version]与[path]中的UserControl之间存在冲突。

我查看了该项目的引用,并在那里找到了自我引用!所以我将其删除,错误消失了。

UserControlForm在同一个项目中,并且将UserControl添加到Form时,我将UserControlToolboxForm上。因此,它会自动为我的项目添加自我参考。我不确定为什么会这么做。但是删除参考文献可以解决问题。