none
VSTO-Plugin wird nicht geladen RRS feed

  • Frage

  • Hallo zusammen!

    Ich bin ziemlich verzweifelt :-/ Ich hoffe Ihr könnt mir weiter helfen.

    Mein Problem ist folgendes: Beliebige VSTO-WordAddins werden nach der Installation auf manchen Rechnern nicht geladen. Die Plugins werden installiert. Bei der Installation gibt es keine Fehlermeldungen. Das Starten von Word verläuft ebenfalls problemlos. Allerdings werden die Plugins einfach nicht geladen. Das AddIn ist in Word -> Word-Optionen -> AddIns unter den "Inaktiven Anwendungs-Add-Ins" zu finden. Eine Aktivierung führt zu nichts.

    Dass es an fehlerhaftem Code innerhalb der Addins liegt bezweifle ich, da verschiedene Plugins nicht funktionieren. Auch ein leeres Standard-Projekt wird nicht geladen.

    Die gleichen Plugins werden aber auf einer Entwicklermaschine mit XP SP3 geladen. Ebenfalls werden die Plugins auf Vista-Maschinen problemlos geladen. Auf einer VMWare mit XP SP3 und auf einer anderen mit XP SP2 werden die Plugins nicht geladen. Die Vista-Rechner sind keine Entwickler-PCs sondern ganz normale Bürorechner. Die VMWares sind "leer". Auf diesen befindet sich nichts außer einer Word-Installation.

    Der Installer lädt dann das .NET-Framework 3.5 und irgendwelche VSTO-Komponenten und installiert diese.

    Warum laufen verschiedene AddIns auf dem einen Rechner und auf dem anderen nicht? Wie kann ich die Fehlerquelle finden? Ich habe schon letzte Woche Donnerstag und Freitag nach einer Lösung gesucht und meine letzte Hoffnung seid nun ihr ;)

    Viele Grüße!
    Montag, 21. September 2009 08:06

Antworten

Alle Antworten

  • Hallo Ryder101,

    ist die .NET-Programmierunterstützung in den Installationsoptionen ausgewählt? Gerade da die betroffenen PCs keine Entwickler-PCs sind, wurde eventuell nur eine eingeschränkte Installation durchgeführt. Stelle zunächst bitte einmal sicher, dass alle Installationsoptionen mit ".NET" in der Bezeichnung aktiviert sind. Sowohl für die einzelnen Anwendungen als auch in den allgemeinen Office-Features.

    Eine weitere Ursache für dein Problem können die Optionen der jeweiligen Office-Anwendungen sein. Schau dort einmal im Vertrauensstellungscenter nach, ob deine Add-Ins überhaupt ausgeführt werden dürfen.

    Viele Grüße
    Jan
    • Bearbeitet Jan Tittel Montag, 21. September 2009 08:36 Nachtrag
    Montag, 21. September 2009 08:34
  • Hallo!

    Bingo! Die .NET-Programmierunterstützung ist der Knackpunkt. Kann ich programmatisch herausfinden ob die .NET-Programmierunterstützung für Word installiert ist? Und kann ich die per Programmcode nachinstallieren?

    Ich kann dem Anwender eigentlich nicht zumuten, dass er nach der Installation unter Software erstmal nachschaut ob die Programmierunterstützung aktiviert ist :-)

    Aber schon mal vielen Dank für deine Hilfe!

    Viele Grüße!

    PS: Ich habe jetzt gegoogelt, bin aber noch auf keine zufriedenstellende Antwort gestoßen: Welche .NET-Framework-Version wird für VSTO 3.0 benötigt? Reicht dafür 3.0 aus oder muss das 3.5 sein?
    • Als Antwort markiert Ryder101 Montag, 21. September 2009 09:48
    • Tag als Antwort aufgehoben Ryder101 Montag, 21. September 2009 09:48
    Montag, 21. September 2009 09:22
  • Hallo Ryder101,

    du musst .NET Framework 3.5 bzw. solltest sogar 3.5 mit SP1 installieren, da mit dem SP1 ein paar Features hinzugekommen sind (beispielsweise eine umfangreichere Unterstützung für Add-Ins auf Anwendungsebene).

    Die entscheidenden Komponenten der .NET-Programmierunterstützung sind die PIAs (Primary Interop Assemblies). Am einfachsten schaust du per .NET Code nach, ob die entsprechenden DLLs (beispielsweise "Microsoft.Office.Interop.Excel.dll") auf dem Rechner installiert sind. Du kannst diese aber auch direkt zusammen mit dem Setup verteilen. Den Download findest du hier
    http://www.microsoft.com/downloads/details.aspx?FamilyID=59daebaa-bed4-4282-a28c-b864d8bfa513&DisplayLang=en
    und weitere Infos dort
    http://msdn.microsoft.com/en-us/library/15s06t57.aspx

    Viele Grüße
    Jan
    Montag, 21. September 2009 10:12
  • Hey!

    Danke schön! Das Problem ist gelöst! =))

    Vielen vielen Dank!
    Montag, 21. September 2009 13:59
  • Hallo,

     

    ich habe ein ähnliches Problem, nur das bei mir die vor besprochenen Dinge alle existieren, bzw. installiert sind. Ich habe ein Excel Addin mit Vsto in Visual Studio C# entwickelt. Dies funktioniert super wenn ich aus Visual Studio das ganze starte. Wenn ich das ganze veröffentliche (mit Zertifikat) dann kann ich es auch installieren. Wenn ich dann Excel starte funktioniert dies auch noch. Wenn ich jetzt aber ein Dokument speichere und dann dieses Dokument wieder öffne, dann deaktiviert mir Excel dieses Addin. Habe im Internet schon ziemlich lange nach einer Lösung für dieses Problem gesucht. Leider aber ohne Erfolg.

    Dienstag, 13. Juli 2010 11:52
  • Hallo,

    ich habe ein ähnliches Problem, nur das bei mir die vor besprochenen Dinge alle existieren, bzw. installiert sind. Ich habe ein Excel Addin mit Vsto in Visual Studio C# entwickelt. Dies funktioniert super wenn ich aus Visual Studio das ganze starte. Wenn ich das ganze veröffentliche (mit Zertifikat) dann kann ich es auch installieren. Wenn ich dann Excel starte funktioniert dies auch noch. Wenn ich jetzt aber ein Dokument speichere und dann dieses Dokument wieder öffne, dann deaktiviert mir Excel dieses Addin.

    Excel deaktiviert Dein Add-In, wenn zuletzt ein nicht abgefangener Fehler von diesem ausgeht. Nutzt Dein Add-In die Events der Excel Anwendung, insbesondere die, die beim Speichern bzw. Schließen  des Workbooks ausgelöst werden? Eine lückenlose Fehlerprotokollierung ist bei der Add-In Entwicklung enorm hilfreich, da Office eher auf das Prinzip baut, möglichst alle Fehlermeldungen vom Anwender fern zu halten. Zusätzliche hilfreiche Informationen kann die Umgebungsvariable VSTO_SUPPRESSDISPLAYALERTS liefern, die mit dem Wert '0' eingetragen werden muss. Damit werden Fehler angezeigt, die von der VSTO Runtime ausgehen.

    Debuggen in Projekten auf Anwendungsebene
    http://msdn.microsoft.com/de-de/library/ms269003(VS.80).aspx

    Gewusst wie: Behandeln von Fehlern in Office-Projekten
    http://msdn.microsoft.com/de-de/library/xxw2cabc(VS.80).aspx



    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 13. Juli 2010 12:05
  • Danke. Aber dies hilft mir auch fast nichts weiter. Es funktioniert jetzt. Der Fehler war, das ich mir zwei Felder deklariert habe in der ThisAddIn.cs die ich dann befüllt habe mit der aktuellen Application und dem Workbook, usw. Siehe unten. Du hast mich auf jeden Fall in die richtige Fehlerrichtung geschickt. Die Frage ist jetzt nur noch, wieso. Was ist daran falsch?

     

     

    private Excel.Application app;
    private Excel.Workbooks books;
    private Excel.Sheets sheets;
    
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
       this.app = this.Application;
       this.books = this.app.Workbooks;
       this.sheets = this.app.Sheets;
    }
    
    
    

     

    Dienstag, 13. Juli 2010 12:31
  • Hallo,

    Der Fehler war, das ich mir zwei Felder deklariert habe in der ThisAddIn.cs die ich dann befüllt habe mit der aktuellen Application und dem Workbook, usw. Siehe unten. Du hast mich auf jeden Fall in die richtige Fehlerrichtung geschickt. Die Frage ist jetzt nur noch, wieso. Was ist daran falsch?

    private Excel.Application app;
    private Excel.Workbooks books;
    private Excel.Sheets sheets;
    
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
      this.app = this.Application;
      this.books = this.app.Workbooks;
      this.sheets = this.app.Sheets;
    }
     

    Wo räumst Du diese Verweise wieder auf? Es kann passieren, dass Excel die dahinter liegenden COM Objekte bereits "entsorgt" hat und danach die Runtime beim Aufräumen durch den GC auf nicht mehr existente Verweise stößt. Solche Verweise solltest Du Dir nur für den kleinst möglichen Scope, also auf Prozedurebene zwischenspeichern, nicht für die Lebenszeit des Add-Ins. Hinzu kommen einige Merkwürdigkeiten der Excel COM Schnittstelle, die durch solche langlebigen Verweise Dein Add-In bzw. Excel selber ins "Schlingern" bringen können.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 13. Juli 2010 13:07
  • Wahrscheinlich hast du Recht. Das Aufräumen der Dinge hab ich nicht gemacht. Da so etwas wie Destructor, wie in C++ ja nicht implizit in C# verwendet werden sollte. Nur wenn es wirklich sein muss. Aber ich verstehe wie du das meinst. Ich bin auch eher ein Fan von so wenig wie möglich Global. Ich danke dir auf jeden Fall erst einmal.
    Dienstag, 13. Juli 2010 14:32
  • Hallo,

    Wahrscheinlich hast du Recht. Das Aufräumen der Dinge hab ich nicht gemacht. Da so etwas wie Destructor, wie in C++ ja nicht implizit in C# verwendet werden sollte.

    Im Add-In Szenario gäbe es hier ja das Shutdown Ereignis, in dem solche Aktionen durchgeführt werden können.

    Visual Studio Tools for Office Project Events
    http://msdn.microsoft.com/en-us/library/7xy91eax(VS.90).aspx


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 13. Juli 2010 14:50