2

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 サービスを作成しようとすると、メモリ不足エラーが再び表示されます。サービスにブレークポイントを設定すると、Web アプリケーションから呼び出されたときに失敗したのとまったく同じ VSTO API 呼び出しでサービスが失敗していることがわかります。

アプリ プール スレッドまたは Windows サービス スレッドで常にメモリ不足エラーが発生しているのに、ユーザー実行可能スレッドが問題なく VSTO API 呼び出しを実行できる理由 (およびメモリ内で観察可能なジャンプがない) の説明を誰かが持っていますか?

4

1 に答える 1

1

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

ユーザー コンテキストを使用しない Office ドキュメント (Interop .dll を使用) の自動化は、MS によってサポートされている "安定性" ではありません。OpenXML SDK のような別のソリューションを使用することをお勧めします。

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

于 2013-06-28T17:50:56.273 に答える