Office 2007 VSTO アドインがあり、リボン XML などを使用しています。再起動後の Office の初回起動時は、2 回目の起動時よりも大幅に時間がかかります。アドインは vstolocal として登録され、インストール中に VSTO 包含リストを使用して信頼されます。私が理解しているように、これにより ClickOnce へのインストールと発行元の確認が回避されます。
では、初回起動時間が長くなる理由として考えられるのは何でしょうか? アイデアを教えてください。
Office 2007 VSTO アドインがあり、リボン XML などを使用しています。再起動後の Office の初回起動時は、2 回目の起動時よりも大幅に時間がかかります。アドインは vstolocal として登録され、インストール中に VSTO 包含リストを使用して信頼されます。私が理解しているように、これにより ClickOnce へのインストールと発行元の確認が回避されます。
では、初回起動時間が長くなる理由として考えられるのは何でしょうか? アイデアを教えてください。
VSTO アドインを使用した Word があり、最初の起動では 20 ~ 30 秒、2 回目の起動では 6 ~ 7 秒かかります。これは、Word 2007、.NET 3.5、および Windows XP の場合です。アドインのない Word は、コールド スタートに約 5 秒、ウォーム スタートに 2 ~ 3 秒かかりました。コールド スタート テストでは、Word がブート後に開始された最初のアプリケーションであり、.NET コードを最初に使用しました。
あなたと同じように、アドインのコードの実行時間は読み込み時間に大きな影響を与えないことがわかりました. VSTO を使用すると、.NET Framework と VSTO ランタイムを読み込んで初期化する必要があります。速度の低下は、ディスクからの読み込みのオーバーヘッドと .NET/VSTO の初期化の組み合わせによるものでした。
もちろん、最初に提起された「解決策」は、ログイン中にWordを目に見えないように起動し、Wordプロセスを強制終了して、ディスクキャッシュをウォームアップすることでした. もちろん、これにより、起動中にさらに 45 秒間マシンが応答しなくなりました (ディスクの競合が増加したためだと思います)。しかし、うわー、その後すぐに Word が起動しました (ただし、ログインしてすぐに起動した場合)。幸いなことに、この解決策をユーザーに課すことはありませんでした。
また、簡単な .NET アプリケーションも作成しました。このアプリケーションは、単純に起動し、Word アドインと同じ依存関係をロードして終了します。これもログイン中にスケジュールされます。Word の起動に数秒かかり、ログインにさらに数秒かかりましたが、一部のユーザーがログイン中に Word を使用しない可能性がある場合、そのトレードオフを行うのは無意味に思えました。セッション。さらに無意味なことに、彼らが Word を使いたいと思っていて、デスクトップが応答するようになるとすぐに Word を起動した場合、Word は、その方法をスムーズにするはずのカスタム アプリケーションとリソースをめぐって競合することになります!
Word テンプレート (VBA) アドインも使用しているため、状況は複雑です。これらは、初期化する必要がある 2 番目のランタイムであり、ディスクのいくつかの散在する領域からロードするファイルが増えるため、起動時間のかなりの部分を占めています。Word のみから VSTO アドインのみの Word または VBA アドインのみの Word に移行すると、VBA と VSTO アドインを組み合わせた Word に移行すると、コールド スタート時間が非線形に増加しました。つまり、依存関係を追加すると、個々の依存関係自体の読み込み時間よりも多くの読み込み時間が合計に追加されました。
また、COM shim ウィザードも試しました。COM Shim を使用すると、VSTO ランタイムが不要になりますが、アドインで .NET を安全に使用できます。生成された COM Shim で動作するように VSTO コードを変換するのはそれほど難しくありませんでした。これにより、読み込み時間がかなり改善されました (数字はありませんが、コールド スタート時間は半分になったと思いますが、VBA アドインが含まれていたためです)。理想的なソリューションは、COM Shim を使用して .NET アドインをロードし、すべての VBA コードを .NET に移行することです。このソリューションが突然提示されたとき、コールド スタート時間は大きな問題ではなく、優先度が大幅に低下しました。
Outlook、Visual Studio 2010、および .NET v4.0 を使用するアドインでもこの問題が発生します。このページを見つけました: http://blogs.msdn.com/b/vsod/archive/2012/05/19/resolving-performance-issues-with-loading-office-add-ins-vsto-add-ins-or -shared-add-ins.aspx
私の観察: 空の (VSTO) アドインも、読み込みに最大 5 秒かかります。
したがって、.NET ライブラリのロードに問題がある可能性があります。
(少なくともこの投稿を見つけた後、この問題が現実であることを知りました。)
編集: 再起動後の問題は、おそらく .NET コールド スタートに関連しています。しかし、奇妙なのは、Windows システム コントロール -> プログラムと機能のアドインのインストール日が現在の日付であることです。アドインは毎日新しくインストールされているようです?!?