【发布时间】:2013-02-01 01:49:15
【问题描述】:
我们正在尝试访问 Microsoft.Office.Interop.Word.Document 实例的 SaveFormat 属性(我猜它在技术上是一个 DocumentClass 实例,因为 Document 是一个接口)。在尝试读取 SaveFormat 时,Word 会非常不优雅地崩溃。将访问包装在 try..catch 块中也不好;控制权正在传递给另一个程序集,该程序集决定终止应用程序,而不是抛出异常让我重新捕获。
无论我只是在代码中读取属性,都会发生这种情况,如下所示:
WdSaveFormat saveFormat = this.document.SaveFormat; // document is a Microsoft.Office.Interop.Word.Document
或者当我使用调试器访问 Watch 中的属性时。
我怀疑文档实例本身没有问题;它的其他属性(例如,路径)可以反映在。在文档对象上运行快速监视会产生看起来合法的值,而不是一堆引发危险的“无法评估”、“空”等值。我可以在 Quickwatch 窗口中逐行向下滚动,一旦进入 SaveFormat,它就会爆炸。
崩溃发生在 Word 2007 和 Word 2010 中。
我尝试过嵌入 PIA 类型而不是嵌入它们(引用属性中的“嵌入互操作类型”标志)
我尝试引用 Word 2007 PIA 而不是 2010 版本。同样的行为。
我们在项目中以 .NET 4.0 为目标,但我也尝试以 3.5 为目标。没有变化。
有什么想法吗?即将取消我的比赛:)
【问题讨论】:
-
这种情况是仅针对特定文档还是针对所有文档?我怀疑问题与您的代码无关,而是与文档或 Word 安装本身有关。您能否检查一下在 Word 中打开文档时会发生什么,打开 VBA 编辑器 (Alt+F11) 并在即时窗口中输入
?ActiveDocument.SaveFormat(Ctrl+G 打开窗口)然后按 Return我>?.
标签: ms-word vsto ms-office office-pia