Подтвердить что ты не робот

Word VSTO сглаживает исключения во время выполнения без отладки?

Поместите этот код где-нибудь на уровне документа документа VSTO-решения за пределами этого документа Document_Startup (создайте кнопку ленты с событием клика):

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

Начать без отладки (Ctrl + F5), Результат: Исключение проглатывается, остальная часть кода терпит неудачу.

Исключение будет видно, если оно помещено в ThisDocument_Startup, но оно больше нигде не появляется. Microsoft VSTO-форумы и документация MSDN кажутся Try Try... Catch следует использовать - что не очень важно для известных неизвестных. Как насчет неизвестных неизвестных?

Все распространенные способы борьбы с необработанными исключениями для управляемого кода, похоже, не работают, по-видимому, из-за использования VSTO с помощью управляемого кода с помощью Office COM Interops:

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

Я читал сообщения об устранении неполадок кода VSTO, который всегда, кажется, приводит к установке Try... Поймать практически все!

Есть ли лучший способ справиться с известными и неизвестными (теперь невидимыми и бесшумными!) неудачами?

4b9b3361

Ответ 1

На самом деле это довольно просто, установите для переменной окружения VSTO_SUPPRESSDISPLAYALERTS значение 0 перед запуском офисного приложения, тогда Office будет отображать исключения и не убивать вашу надстройку во время запуска при возникновении проблем.

Существует также полезная powershell script, которая будет делать такие вещи для вас и удобна при вычислении, когда VSTO не работает на http://archive.msdn.microsoft.com/vstotroubleshooter Начните с запуска vstotroubleshooter.ps1 setdbg, который установит для вас переменную env VSTO_SUPPRESSDISPLAYALERTS

Ответ 2

Я думаю, что проблема изолирована только от исключений вокруг "дополнительного пользовательского интерфейса" - которая, как представляется, является прямой установкой, найденной здесь (Word 2007):

Параметры Word > Дополнительно > Общие > "Показывать ошибки пользовательского интерфейса надстройки"

Ответ 3

я могу получить ************** Исключительный текст ************** System.DivideByZeroException: Попытка деления на ноль.

с проектом добавления уровня приложения.

Вы видите это только с помощью проектов настройки уровня Doc? Также только в слове или это также происходит в Excel?

Ответ 4

У меня была такая же проблема с надстройкой уровня приложения в Word.

Если вы запускаете свою надстройку, запустив ее из Visual Studio с F5, вы всегда получите "необработанный по пользовательскому коду" в VS (например, 2008 SP1), если:

  • вы снимите отметку с параметра Visual Studio "Перерыв, когда исключение... пользовательское необработанное" для исключений CLR или

  • вы свободно применяете аннотацию [System.Diagnostics.DebuggerNonUserCodeAttribute()]. ​​

Как только вы сделали одно из них, кажется, что работает UnhandledException/ThreadException.