visual tools studio office for crear con complemento ms-word vsto

ms word - tools - ¿La palabra VSTO traga las excepciones en tiempo de ejecución sin depurar?



vsto excel (3)

Creo que el problema está aislado solo a las excepciones en torno a la "interfaz de usuario del complemento", que es una configuración directa que se encuentra aquí (Word 2007):

Opciones de Word> Avanzado> General> "Mostrar errores de interfaz de usuario de complemento"

Coloque este código en algún lugar de una solución VSTO de nivel de documento de Word fuera de ThisDocument_Startup (cree un botón de cinta, con un evento de clic):

int zero = 0; int divideByZero = 10 / zero;

Comience sin depurar (Ctrl + F5), Resultado: La excepción se traga, el resto del código falla silenciosamente.

La excepción será visible si se coloca en ThisDocument_Startup, pero no aparece en ninguna otra parte. Los foros de VSTO de Microsoft y la documentación de MSDN parecen sentirse en Probar ... Debería usarse la captura, lo cual no es un gran problema para desconocidos conocidos. ¿Qué pasa con las incógnitas desconocidas?

Todas las formas comunes de lidiar con las excepciones no manejadas para el código administrado no parecen funcionar, probablemente debido a que VSTO usa código administrado con los Interops COM de Office:

//These don''t work AppDomain.CurrentDomain.UnhandledException ... System.Windows.Forms.Application.ThreadException ...

He leído publicaciones sobre solución de problemas con el código VSTO que siempre parece llevar a colocar Try ... ¡Atrapa prácticamente todo!

¿Hay alguna manera mejor de manejar los errores conocidos y desconocidos (ahora invisibles y silenciosos)?


En realidad, es bastante sencillo, establezca la variable de entorno VSTO_SUPPRESSDISPLAYALERTS en 0 antes de ejecutar la aplicación de Office, luego Office mostrará excepciones y no eliminará su complemento durante el inicio cuando haya problemas.

También hay un útil script de powershell que hará este tipo de cosas por usted y es útil para determinar cuándo VSTO no funciona en http://archive.msdn.microsoft.com/vstotroubleshooter Comience ejecutando vstotroubleshooter.ps1 setdbg que configura la variable de entorno VSTO_SUPPRESSDISPLAYALERTS por ti


Tuve el mismo problema con un complemento de nivel de aplicación en Word.

Si está ejecutando su complemento ejecutándolo desde Visual Studio con F5, entonces siempre obtendrá "no manejado por el código de usuario" en VS (por ejemplo, 2008 SP1), a menos que:

  • desactiva la configuración de Visual Studio "Interrumpir cuando una excepción es ... no controlada por el usuario" para las excepciones de CLR, o

  • aplicas generosamente la anotación [System.Diagnostics.DebuggerNonUserCodeAttribute ()].

Una vez que haya hecho uno de estos, UnhandledException / ThreadException parece funcionar.