У меня есть одна строка кода в проекте надстройки Word VSTO, которая раньше работала, но внезапно перестала работать:
Microsoft.Office.Interop.Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
Прежде чем он просто возвратил объект Document
, как и предполагалось, я мог читать и манипулировать им без проблем. Но теперь он вызывает исключение System.Runtime.InteropServices.COMException
. «Слово столкнулось с проблемой». Очень полезно. Исключение содержит HRESULT 0x800A13E9, который мне пока не помог. Недостаточно памяти или что-то? ИДК.
Новое поведение кажется началось в канун Нового года (не уверен, так как я не использовал надстройку в течение последних нескольких недель), и оно началось, когда надстройка была установлен, т.е. ничего в коде не было изменено, перекомпилировано или переустановлено, чтобы это произошло. С тех пор я перестроил проект, думая, что срок действия сертификата истек или что-то в этом роде, но ошибка по-прежнему возникает.
Возможно, стоит отметить, что я все еще могу получить доступ к другим свойствам экземпляра приложения. Например, эта строка не выдает исключение:
int numDocuments = Globals.ThisAddIn.Application.Documents.Count;
Но затем, когда я перебираю коллекцию Documents
с foreach
, она просто пропускает цикл, как будто счетчик равен нулю.
Единственное, о чем я могу думать, это то, что обновление Office (365) сломало что-то, связанное с VSTO. Но где мне вообще начать отлаживать это?
Хорошо, поэтому я попытался создать новую надстройку Word VSTO, не изменяя ни одно из свойств проекта по умолчанию, но добавив одну ленту с одной кнопкой и следующий метод:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
try
{
var x = Globals.ThisAddIn.Application.ActiveDocument;
}
catch (Exception ex)
{
;
}
}
Выдает точно такое же исключение при получении свойства ActiveDocument. Однако я заметил, что при загрузке надстройки возникает еще два исключения, а также при загрузке исходной надстройки (которая раньше работала нормально):
Exception thrown: 'System.Deployment.Application.DeploymentException' in System.Deployment.dll
Exception thrown: 'System.Security.Cryptography.CryptographicException' in Microsoft.VisualStudio.Tools.Applications.Hosting.dll
Они не препятствуют загрузке и запуску надстройки, но, может быть, они все равно связаны с проблемой? Я не знаю, были ли они также брошены в прошлом году до появления проблемы.
Однако у меня есть пара надстроек Excel, которые по-прежнему нормально работают с той же версией VSTO, Visual Studio и Office, и они не выдают два вышеупомянутых исключения при загрузке. Так что проблема, похоже, специфична для Word.
И теперь я попытался откатиться до версии 3610 Office 365, октябрьского выпуска, который определенно работал раньше, поэтому я думаю, что , вероятно, не является проблемой, представленной обновлением Office. Это что-то еще. Возможно.
Не то чтобы это мне очень помогало, но, по крайней мере, я исключил это. Возможно.