c# - 内存不足故障自动化 VSTO Powerpoint API

标签 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 调用以操作文件(例如,将幻灯片保存或添加到 powerpoint)时,我收到的错误是“内存不足”。

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

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

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

最佳答案

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

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

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

关于c# - 内存不足故障自动化 VSTO Powerpoint API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16390358/

相关文章:

c#-4.0 - 在 Word ContentControl 中提取图像和其他组件?

c# - 将固定值设置为图表的 X 轴

c# - 使用 ASP.NET 发送邮件

c# - .NET Xml 序列化程序可选属性

android - 基于 Arduino 和 Android 的 PC

delphi - 如何识别 MS Excel 对象类型?

ms-word - 从 VSTO 加载项检测 Word 2016 中的文本更改

c# 打开一个新窗体然后关闭当前窗体?

bash - Ubuntu + cron 上的 Postgres 备份脚本

c# - AltChunk 破坏富文本内容控件