在我的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
是什么意思?
答案 0 :(得分:0)
感谢Caius,我设法找到了问题所在。由于与Form
有关的错误,设计者无法渲染UserControl
。我查看了designer.cs文件,发现一条警告,指出[path]中的UserControl
[version]与[path]中的UserControl
之间存在冲突。
我查看了该项目的引用,并在那里找到了自我引用!所以我将其删除,错误消失了。
UserControl
和Form
在同一个项目中,并且将UserControl
添加到Form
时,我将UserControl
从Toolbox
到Form
上。因此,它会自动为我的项目添加自我参考。我不确定为什么会这么做。但是删除参考文献可以解决问题。