В любом случае, я надеюсь, что они получили хорошую телеметрию от многих, многих часов, пытаясь сделать все, что я мог придумать, так что, возможно, проблема будет решена к тому времени, когда обновление будет навязано мне. Если нет, то я вернусь, чтобы снова задать тот же вопрос. По крайней мере, я буду знать, где начать искать причину.
я есть одна строка кода в проекте надстройки 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. Это что-то еще. Вероятно.
Не то чтобы это мне очень помогло, но я, по крайней мере, исключил это. Вероятно.