4

Microsoft Office Excel 2003を対象とした単純な「HelloWorld」VSTO2SEアドインを作成する場合、コールドスタートアップでの読み込みには15秒かかります。その間、Excelは完全に応答しなくなります。

コールドスタートアップ時間は、Excel2003では常に不十分です。Excel2007で起動時間が瞬時に行われるテストマシンを1台見ましたが、他のすべてのテストマシンは初期化に15秒かかります。(テスト環境-Windows XP Pro+VSTO2SEランタイム+XPSP3)

このパフォーマンスをどのように改善できますか?

私がすでに試したが成功しなかったこと:

  1. CRL(証明書失効リスト)チェックを無効にする-これは役に立たないようです。さらに、ユーザーがこれを行うことは期待できません。

  2. NGENを使用して、ネイティブアセンブリを作成します。
    a)Office2003がネイティブアセンブリを使用することはないようです。b)高速で起動する私のOffice 2007テストクライアントは、ILアセンブリでも起動します。c)依存関係ツリー全体をNGENした場合でも、ネイティブイメージを持たない可能性のあるVSTO依存関係があります。

  3. アドインのロードを遅らせる-これは、Microsoftから入手した回避策の「ストックレスポンス」です。重要なのは、私のアドインはメニュー項目から起動されるということです-アドインのロードを遅らせてもメニューを取得するにはどうすればよいですか?VB6アドインを使用してメニューを描画し、相互運用機能を介して呼び出しを転送することはできますが、そもそもなぜVSTOアドインを作成するのでしょうか。

編集-はい、それはアドインの「接続」イベントの唯一の行です。(実際にはメッセージボックス)。メッセージボックスが表示されるまでに15秒かかります。–Jデイビス

4

2 に答える 2

1

初めてすべてのアセンブリをロードする必要があるため、コールド スタートに打撃を与えることになります。

ウォーム スタートが大幅に高速である場合、唯一の実際のオプションは次のとおりです。

1)ウィンドウの起動時に別のプログラムをロードし、アドイン用のすべてのアセンブリをバックグラウンドでロードします。

2)使用しているアセンブリの数を減らすようにしてください。確かに、Hello World ではあまり使用しないでください。

3) Excel の起動時にすべてをプリロードします。これにより、Excel の起動時間が長くなりますが、メニューの選択が速くなります。これを支援するために、バックグラウンドですべてをプリロードすることもできます。

于 2008-12-05T19:02:24.190 に答える
0

実際のホールドアップが何であるかを確認しましたか?Debug.Write()ステートメントをVSTOアドインの最初の行に配置した場合、デバッグウィンドウに表示されるまでに15秒かかりますか?

私たちはVSTOを使用しており、ホールドアップがある場合は常に、実際のランタイム以外の何かが速度低下を引き起こしています。この問題は、バックグラウンドスレッドをスピンオフして、Excelの起動を妨げるメインスレッドをブロックせずに、遅い処理を実行することで解決しました。

ps。また、VSTOテクノロジーの大ファンでもありません。私たちは100%ビジョンに賛同していますが、実装には多くの要望があります。

于 2008-10-29T22:22:41.487 に答える