内存不足导致VSTO Powerpoint API自动化失败

时间:2013-05-05 23:55:58

标签: c# automation vsto powerpoint

我正在使用VSTO Powerpoint API自动创建Powerpoint文件。我发现使用最基本的调用从Windows 7系统上的Web应用程序创建Powerpoint文件会导致内存不足错误(操作打开文件的其他VSTO调用也会失败):

PowerPoint.Presentation presentation = _ppPresentations.Add(Office.MsoTriState.msoTrue);
        string outputDirectory= getOutputDirectory();
        presentation.SaveAs(outputDirectory+ "\\CreateSlideTestOutput.pptx",
                            PowerPoint.PpSaveAsFileType.ppSaveAsDefault, Office.MsoTriState.msoTrue);

我收到的错误是“内存不足”,无论是进行任何VSTO API调用来操作文件(例如,保存或向幻灯片添加幻灯片)。

但是,我发现如果我在单元测试中运行相同的代码,或者作为用户可执行文件(.exe),我在添加内容,操作和保存Powerpoint文件方面没有问题。

但是,当我尝试创建Windows服务以自动执行用户可执行文件中使用的相同代码时,我再次收到Insufficient Memory错误。我可以在我的服务中设置一个断点,并且看到它在从我的Web应用程序调用时失败的完全相同的VSTO API调用失败。

有没有人解释为什么用户可执行线程可以执行VSTO API调用而没有任何问题(并且没有可观察到的内存跳转)而我的应用程序池线程或Windows服务线程总是会遇到内存不足错误?< / p>

1 个答案:

答案 0 :(得分:1)

http://support.microsoft.com/kb/257757

在没有用户上下文的情况下自动化Office文档(使用Interop .dll)不是MS支持的“稳定性”。他们建议使用其他解决方案,如OpenXML SDK:

http://www.microsoft.com/en-us/download/details.aspx?id=5124