Pregunta

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;

Comienza sin depurar (Ctrl + F5), Resultado: se traga la excepción, el resto del código falla en silencio.

La excepción será visible si se coloca en ThisDocument_Startup, pero no aparece en ningún otro lugar. Los foros VSTO de Microsoft y la documentación de MSDN parecen sentir que se debe probar Try ... Catch, lo que no es un gran problema para las incógnitas conocidas. ¿Qué pasa con las incógnitas desconocidas?

Todas las formas comunes de tratar las excepciones no controladas para el código administrado no parecen funcionar, presumiblemente debido a que VSTO usa código administrado con interops COM de Office:

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

He leído publicaciones sobre la resolución de problemas del código VSTO que siempre parece llevar a la colocación Intentar ... ¡Atrapar prácticamente todo!

¿Hay alguna forma mejor de manejar fallas conocidas y desconocidas (ahora invisibles y silenciosas)?

¿Fue útil?

Solución

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

También hay un script de PowerShell útil que hará este tipo de cosas por usted y es útil cuando se da cuenta cuando VSTO no funciona en http://archive.msdn.microsoft.com/vstotroubleshooter Comience ejecutando vstotroubleshooter.ps1 setdbg que configurará la variable env VSTO_SUPPRESSDISPLAYALERTS para usted

Otros consejos

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

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

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

Si está ejecutando su complemento al iniciarlo desde Visual Studio con F5, siempre obtendrá "sin control por el código de usuario". en VS (por ejemplo, 2008 SP1), a menos que:

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

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

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

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