Word 2007/2010:访问Microsoft.Office.Interop.Word.Document.SaveFormat属性崩溃Word

时间:2013-01-30 20:40:03

标签: ms-word vsto ms-office office-pia

我们正在尝试访问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中的属性时。

我怀疑文档实例本身很好;其他属性(例如,Path)可以反映出来。在文档对象上运行quickwatch会产生看似合法的值,而不是一堆红旗“无法评估”,“null”等值。我可以在Quickwatch窗口中逐行向下滚动,一旦它进入SaveFormat就会爆炸。

崩溃发生在Word 2007以及Word 2010中。

我已尝试嵌入PIA类型而不嵌入它们(参考属性中的“嵌入互操作类型”标志)

我尝试过引用Word 2007 PIA而不是2010版本。同样的行为。

我们在项目中定位.NET 4.0,但我也尝试过定位3.5。没有变化。

有什么想法吗?即将破坏我的comp:)

1 个答案:

答案 0 :(得分:0)

事实证明该文档是一个零字节文件。我们不好,但是如果Word抛出一个有用的异常(类似于当你尝试访问没有文档打开的Application.ActiveDocument时发生的情况)而不仅仅是炸毁它本来会很好。哦,谜团解决了。 :)感谢0xA3建议可能文档本身就是问题。曾经走过一条思路,忘了看看那些显而易见的东西吗?