0

我们正在尝试访问 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 为目标。没变。

有任何想法吗?即将为我的比赛辩护:)

4

1 回答 1

0

事实证明,该文档是一个零字节文件。我们很糟糕,但如果 Word 抛出一个有用的异常(类似于您尝试在没有打开文档的情况下访问 Application.ActiveDocument 时发生的情况)而不是直接炸毁,那就太好了。哦,好吧,大谜团解开了。:) 感谢 0xA3 建议文档本身可能是问题所在。有没有想过一种思路而忘记看明显的东西?

于 2013-01-31T17:49:15.940 回答