Frage

Mit c #, VS2005 und .NET 2.0. (XP 32 bit) Dies ist eine WinForms-Anwendung, die von einem VBA-Addin (XLA) über Interop-Bibliotheken aufgerufen wird. Diese App hat sich für eine Weile und funktioniert gut, wenn die Assembly kompiliert wird und irgendwo anders als meine Dev-Maschine ausgeführt. Auf dev stürzt es hart (in Debugger und läuft nur das Objekt) mit „Nicht behandelte Ausnahme bei 0x ... in EXCEL.EXE: 0x ... Verletzung Leseort 0x ...

Aber hier ist der seltsame Teil:

Die erste Methode in meiner Schnittstelle funktioniert gut. Alle anderen Methoden, wie oben zum Absturz bringen. Hier ist eine Annäherung des Codes:

[Guid("123Fooetc...")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IBar
    {
        [DispId(1)]
         void ThisOneWorksFine(Excel.Workbook ActiveWorkBook);

         [DispId(2)]
         string Crash1(Excel.Workbook ActiveWorkBook);

         [DispId(3)]
         int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
     }

    [Guid("345Fooetc..")]
    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("MyNameSpace.MyClass")]    
    public class MyClass : IBar
    {
        public void ThisOneWorksFine(Excel.Workbook ActiveWorkBook)
        {...}

         string Crash1(Excel.Workbook ActiveWorkBook);
        {...}

         int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
        {...}

    }

Es scheint wie eine Art Umwelt-Sache. Registry chundered? Könnte Code Fehler sein, aber es funktioniert anderswo in Ordnung.

War es hilfreich?

Lösung

Ich habe Probleme in diesem Szenario mit Office 2003 in der Vergangenheit hat. Einige Dinge, die dazu beigetragen haben:

  • Installieren von Office 2003 Service Pack 2 gestoppt einige Abstürze, die passiert, wenn Excel geschlossen wird.

  • Installieren von Office 2003 Service Pack 3 behebt einen Fehler mit XP Stilen in einer VSTO2005 Anwendung (nicht Ihren Fall hier)

  • Ausführen des Excel VBA CodeCleaner http://www.appspro.com/Utilities /CodeCleaner.htm hilft regelmäßig zufällige Abstürze zu verhindern.

  • Zugriff auf Excel-Objekte von mehreren Threads wäre vertrackt, so dass ich hoffe, dass Sie das nicht tun.

Wenn Sie die Möglichkeit haben, Sie auch versuchen könnte einen Fall mit Microsoft PSS öffnen. Sie sind ziemlich gut, wenn Sie in der Lage sind, das Problem zu reproduzieren. Und in den meisten Fällen ist diese Art der Sache ist ein Fehler, so dass Sie nicht für sie berechnet werden:)

Andere Tipps

Ist Ihre dev Maschine Win64? Ich habe Probleme mit win64 von Anwendungen erstellt, die weg gehen, wenn Sie die Bauplattform auf x86 gesetzt.

Ist Ihre dev Maschine eine andere Version von Office als die anderen Maschinen ausgeführt werden? Ich weiß, dass die PIAs unterscheiden. Also, wenn Sie auf Office 2003 und das Testen auf Office 2007 (oder umgekehrt) sind zu entwickeln, zum Beispiel, werden Sie auf Probleme stoßen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top