我正在通过将业务逻辑与GUI分离来清理旧的C ++ - CLI软件。尽管事实上我已经单独保留了Windows窗体设计器代码,但它现在不会显示我的窗体而是抛出异常:
Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
调用堆栈如下所示:
at EnvDTE.CodeFunction.GetStartPoint(vsCMPart Part)
at Microsoft.VisualC.CppCodeParser.OnMethodPopulateStatements(Object sender, EventArgs e)
at System.CodeDom.CodeMemberMethod.get_Statements()
at System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
...这些都不是我的代码。我可能会有什么不安?
答案 0 :(得分:2)
基于调用堆栈,看起来WinForms设计器正在窒息,试图读取生成文件中InitializeComponents
方法内的代码。实际的错误方是C ++代码模型实现。
这里最有可能发生的是该方法中的特定语句导致代码模型在此处出错。我首先评论整个方法,验证解决了问题,然后慢慢取消注释部分,直到我追踪违规行
答案 1 :(得分:0)
检查InitializeComponent()
函数中是否没有您自己的代码。我已将其替换为现在正常工作。
答案 2 :(得分:-1)
我用Google搜索了错误,并且有一些线程引用了各种不同的应用程序,这些都会产生此错误:
http://forums.iis.net/t/1148764.aspx/1 和 http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/11e91d76-f5f3-45c3-b3f6-30c1e4121b9f/
只是两个
此错误的主要原因似乎是用户或进程试图访问,运行或写入无法访问的内容。
您是否尝试过以管理员身份运行该应用程序?
如果不起作用,请确保项目文件夹和应用程序文件夹位于可影响权限的同一分区上。
您是否因为安装该应用程序而未升级您的操作系统?如果是这样,您的GUID可能与应用程序上存储的GUID不匹配,并且可能导致错误卸载/重新安装将解决此问题。
希望有所帮助