1

使用 Visual Studio 2008 时,我在尝试在 Visual Basic 中打开标准保存文件对话框时第一次遇到这种情况。到目前为止,我已经在无结果的搜索后解决了它。现在我发现任何会导致保存/打开对话框的操作(例如 ctrl-O)也会失败。我已经搜索了更多,但仍然不知道如何解决它。

我知道的东西:这不是 Visual Studio 错误,它显然可以发生在任何数量的其他应用程序中(这就是为什么搜索它很烦人)

它与 .NET 或 COM 相关,我尝试重新安装所有 .NET 却没有运气,而且我从来没有搞砸过 COM,我什至不知道它是什么。

有些东西丢失、放错了地方,或者可能是 DLL 版本问题。

我真的不想处理卸载 VS2008 或 MS Office(我发现建议的一个结果)或任何其他大型应用程序。

4

4 回答 4

2

这里的根本问题是 CoCreateInstance 失败了。如果不附加调试器并中断 CoCreateInstance,将很难找出问题所在。即使您花时间执行此操作,也不太可能修复错误。

我同意重新安装是最后的手段。但是中间步骤是尝试修复安装。如果您重新插入 VS 安装盘,其中一个选项将是“修复”安装。您可能必须通过添加/删除程序才能获得此选项。

修复比卸载/重新安装要快得多,并且很可能会解决此特定问题。

编辑

OP 报告修复成功但没有修复错误。您能否检查事件日志并查看是否针对此故障生成了更具体的错误?

于 2009-03-09T02:51:23.263 回答
1

我在 VS 2008 中遇到过类似的问题,幸运的是,它通过以下解决方案得到了解决。尝试这个!!

找到 devenv.exe。右键单击>属性>取消选中禁用视觉主题选项

于 2010-03-01T10:03:31.283 回答
1

因此,某个地方的某个人正在尝试共同创建它(认为)它需要完成其工作的一些对象。这可能是也可能不是 Visual Studio 对象。由于它显示在“保存/打开”对话框中,它很可能是一个外壳对象。

最可能的解释是对象的注册表项已以某种方式损坏,或者导出对象的 dll 以某种方式损坏。对于后者,它可能完全丢失,或者由于某种原因处于不良状态。

您可以尝试做的一件事是在可能的候选 DLL 上运行 regsvr32,但这只是在黑暗中拍摄。

另一个更高级的选项是将调试器(例如 ntsd 或 windbg)附加到它自己的 Visual Studio 进程并在系统 dll 中的 CoCreateInstance() 上设置断点(确保在头文件中查找其确切签名 -它可能是#defined 到别的东西)。然后获取它作为参数传递给 CoCreateInstance() 的对象的 GUID。在您的注册表(或没有此问题的朋友注册表)中查找此内容应该可以让您很好地了解需要处理的 DLL。

于 2009-03-09T01:23:08.670 回答
0

Unchecking Disable Visual Themes didn't work for me, but running in xp compatibility mode fixed it. I'm assuming the problem is a missing dll.

于 2010-04-28T18:42:10.577 回答