我们正在尝试访问 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 为目标。没变。
有任何想法吗?即将为我的比赛辩护:)