Palavra VSTO engole exceções em tempo de execução, sem a depuração?

StackOverflow https://stackoverflow.com/questions/1018745

  •  06-07-2019
  •  | 
  •  

Pergunta

Coloque isso em algum lugar do código em uma Palavra nível do documento solução VSTO fora do ThisDocument_Startup (criar um botão de fita, com um evento de clique):

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

Iniciar sem depuração (Ctrl + F5), Resultado:. Exceção é engolido, o resto do código falha silenciosamente

A exceção irá ser visível se colocado em ThisDocument_Startup, mas parece que em nenhum outro lugar. fóruns VSTO da Microsoft e a documentação MSDN parecem sentir try ... catch deve ser usado - o que não é um grande negócio para incógnitas conhecidas. E sobre as incógnitas desconhecidas?

Todas as formas comuns de lidar com exceções não tratadas para código gerenciado não parecem trabalho, presumivelmente por causa do VSTO usando código gerenciado com o Office COM Interops:

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

Eu li posts sobre solução de problemas código VSTO que parece sempre levar a colocar try ... catch em torno de praticamente tudo!

Existe alguma maneira melhor de lidar com conhecidos e desconhecidos (agora invisível e silencioso!) Falhas?

Foi útil?

Solução

Na verdade, é bastante fácil, defina as VSTO_SUPPRESSDISPLAYALERTS variáveis ??ambientais para 0 antes de executar o aplicativo de escritório, em seguida, Office irá exibir exceções e não matar o seu add-in durante a inicialização quando há problemas.

Há também um script powershell útil que vai fazer esse tipo de coisa para você e é útil quando descobrir quando VSTO não trabalhar em http://archive.msdn.microsoft.com/vstotroubleshooter Comece executando vstotroubleshooter.ps1 setdbg que irá configurar os VSTO_SUPPRESSDISPLAYALERTS env variável para você

Outras dicas

Eu acho que o problema é isolado apenas de excepções ao redor do "add-in interface de usuário" - que acontece de ser um ajuste direto encontrada aqui (Word 2007):

Opções do Word> Avançado> Geral> "Mostrar Add-in de usuário erros de interface"

Eu tive o mesmo problema com um nível de aplicativo add-in no Word.

Se você estiver executando o seu add-in, lançando-lo do Visual Studio com F5, então você vai sempre se "não tratada pelo código do usuário" no VS (eg 2008 SP1), a menos que:

  • você desmarcar a configuração do Visual Studio "Pausa quando uma exceção é .. user-não tratada" para exceções CLR, ou

  • Você liberalmente aplicar o [System.Diagnostics.DebuggerNonUserCodeAttribute) (] anotação.

Depois de ter feito um desses, UnhandledException / ThreadException parecem funcionar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top