4 Stimmen

Wie kann ich die Kaltstartleistung für ein VSTO2SE MS Office Add-In verbessern?

Wenn Sie ein einfaches "Hello World"-VSTO2SE-Add-In für Microsoft Office Excel 2003 erstellen, dauert es beim Kaltstart 15 Sekunden, bis es geladen ist. Während dieser Zeit reagiert Excel überhaupt nicht.

Die Kaltstartzeit ist in Excel 2003 immer schlecht. Ich habe einen Testcomputer gesehen, bei dem die Startzeit in Excel 2007 sofort erreicht wurde, aber alle anderen Testcomputer brauchen 15 Sekunden zum Initialisieren. (Testumgebung - Windows xp pro + VSTO2SE Laufzeitumgebung + XP SP3)

Wie kann diese Leistung verbessert werden?

Dinge, die ich bereits erfolglos ausprobiert habe:

  1. Deaktivieren Sie die CRL-Prüfung (Certificate Revoke List) - dies scheint nicht zu helfen, und ich kann nicht erwarten, dass die Benutzer dies tun.

  2. Verwenden Sie NGEN, um native Assemblies zu erstellen.
    a) Es scheint, dass Office 2003 nie die nativen Assemblies verwendet. b) Mein Office 2007-Testclient, der schnell startet, tut dies auch mit IL-Assemblies. c) Selbst wenn ich meinen gesamten Depencency-Baum NGEN, gibt es immer noch VSTO-Abhängigkeiten, die möglicherweise nicht über native Bilder.

  3. Verzögern Sie das Laden des Add-Ins - das ist die "Standardantwort", die ich von Microsoft erhalte. Das Problem ist, dass mein Add-In von einem Menüpunkt aus gestartet wird - wie kann ich das Laden des Add-Ins verzögern und trotzdem meine Menüs erhalten? Ich könnte ein VB6-Add-In verwenden, um die Menüs zu zeichnen und die Aufrufe über Interop weiterzuleiten, aber warum sollte ich dann überhaupt ein VSTO-Add-In schreiben?

Bearbeiten - Ja, das ist die einzige Zeile im Ereignis "Verbindung" im Add-In. (eigentlich messagebox).. Es dauert ganze 15 Sekunden, bis das Meldungsfenster erscheint. - J Davis

1voto

Jacob Adams Punkte 3914

Beim Kaltstart werden Sie einen Rückschlag erleiden, weil er alle Baugruppen zum ersten Mal laden muss.

Wenn der Warmstart deutlich schneller ist, haben Sie nur folgende Möglichkeiten

1) Lassen Sie ein separates Programm laden, wenn Windows startet, und laden Sie alle Baugruppen für Ihr Addin im Hintergrund.

2) Versuchen Sie, die Anzahl der von Ihnen verwendeten Baugruppen zu reduzieren. Zugegeben, Sie sollten nicht viel mit Hello World verwenden.

3) Laden Sie alles vor, wenn Excel startet. Dadurch wird die Startzeit von Excel verkürzt, aber die Menüauswahl wird beschleunigt. Sie könnten auch alles im Hintergrund vorladen, um dies zu unterstützen.

0voto

Paul Prewett Punkte 1993

Haben Sie sich vergewissert, was die tatsächliche Verzögerung ist? Wenn Sie eine Debug.Write()-Anweisung als erste Zeile in Ihr VSTO-Addin einfügen, dauert es dann 15 Sekunden, bis es im Debug-Fenster angezeigt wird?

Wir arbeiten mit VSTO, und immer, wenn es zu Verzögerungen kommt, ist es in der Regel etwas anderes als die eigentliche Laufzeit, die die Verlangsamung verursacht. Wir haben dieses Problem gelöst, indem wir Hintergrund-Threads für die langsamen Dinge abzweigen, ohne den Haupt-Thread zu blockieren, der den Excel-Start verzögert.

ps. Wir sind auch keine großen Fans der VSTO-Technologie. Wir sind zu 100 % von der Vision überzeugt, aber die Umsetzung lässt viel zu wünschen übrig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X