Pregunta

Usando c#, VS2005 y .NET 2.0.(XP 32 bits) Esta es una aplicación Winforms a la que un complemento VBA (.xla) llama a través de bibliotecas de Interop.Esta aplicación existe desde hace un tiempo y funciona bien cuando el ensamblado se compila y ejecuta en cualquier lugar que no sea mi máquina de desarrollo.En el desarrollo, falla con fuerza (en el depurador y simplemente ejecutando el objeto) con "Excepción no controlada en 0x...en EXCEL.EXE:0x... ubicación de lectura de infracción 0x...

Pero aquí está la parte rara:

El primer método en mi interfaz funciona bien.Todos los demás métodos fallan como se indicó anteriormente.Aquí hay una aproximación del código:

[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);
        {...}

    }

Parece una especie de problema medioambiental.¿Registro roto?Podrían ser errores de código, pero funciona bien en otros lugares.

¿Fue útil?

Solución

He tenido problemas en este escenario con Office 2003 en el pasado.Algunas cosas que han ayudado:

  • La instalación de Office 2003 Service Pack 2 detuvo algunos bloqueos que ocurrían al cerrar Excel.

  • La instalación de Office 2003 Service Pack 3 corrige un error relacionado con el uso de estilos XP en una aplicación VSTO2005 (no es su caso aquí)

  • Ejecutando Excel VBA CodeCleaner http://www.appspro.com/Utilities/CodeCleaner.htm periódicamente ayuda a prevenir fallas aleatorias.

  • Acceder a objetos de Excel desde varios subprocesos sería complicado, así que espero que no lo estés haciendo.

Si tiene la posibilidad, también puede intentar abrir un caso con Microsoft PSS.Son bastante buenos si puedes reproducir el problema.Y en la mayoría de los casos, este tipo de cosas son un error, por lo que no se te cobrará por ello :)

Otros consejos

¿Su máquina de desarrollo es Win64?He tenido problemas con compilaciones de aplicaciones win64 que desaparecen si configuras la plataforma de compilación en x86.

¿Su máquina de desarrollo ejecuta una versión de Office diferente a la de las otras máquinas?Sé que las PIA difieren.Entonces, si está desarrollando en Office 2003 y probando en Office 2007 (o viceversa), por ejemplo, tendrá problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top