У меня очень странная (и непоследовательная) проблема с надстройкой VSTO Outlook.При работе над некоторыми обновлениями внезапно AddIn, по-видимому, не может вызвать код, который находится в другом классе внутри самого проекта.Это не ссылочная сборка или что-то подобное, просто управляемый код, найденный в отдельном файле класса.Лучший способ подтвердить это - добавить окно оповещения в качестве первой строки вызываемого метода.
В основном AddIn FormRegion:
Private Sub DocumentMenu_Click(sender As Object, e As EventArgs) Handles DocumentMenu.Click
Dim applicationName As String = "MyApp"
Dim supportGroupName As String = "MyAppSupport"
SetLoadingStatus("Validating user...") ' <<-- This works
MsgBox("About to call the method") ' <<-- This works
Dim userStatus As String = DocumentService.UserIsAuthorized ' <<-- Dies here
If userStatus.ToUpperInvariant() = "Valid User".ToUpperInvariant() Then
Me.SetLoadingStatus("Checking attachments...")
В DocumentService.vb:
Public Shared Function UserIsAuthorized() As String
MsgBox("First line of method") '<< -- Doesn't ever come up
Try
Using handler As New RestServiceHandler
Using client As HttpClient = handler.GetRestConfiguartion()
' Etc. - irreleveant because it never gets this far
Обидно то, что я вообще не менял код, гдеэто происходит.Это не происходит постоянно (это работало на моей машине, машине моего коллеги, а также на одной машине для тестирования, но не на второй или на машинах моих конечных пользователей).
Я являюсь локальным администратором на моей машине, но не на одной из тестируемых машин (включая ту, где она работала).Сбой на компьютерах Win7 / Office 2010 и Win10 / Office 2016.(Все машины, на которых он работает, имеют Win10 / Office 2016, и большинство наших клиентов тоже.) Не удалось использовать как дистрибутив OneClick, так и подписанные установщики .msi.
Я обновил .Net framework с 4.0 до 4.6.2, но даже когда я откатился до 4.0, я все еще вижу это поведение.В версии 4.0 есть версия, которая работает для 270 пользователей, включая ту, для которой новая версия не работает.Механизм работы наших конечных пользователей довольно закрыт, поэтому мои возможности отладки довольно ограничены.На одной тестовой машине, где я могу воспроизвести это поведение, я не вижу ошибок, зарегистрированных в Event Viewer.
Кто-нибудь когда-либо видел что-либо подобное?Насколько я могу определить, он просто умирает, прежде чем сможет вызвать код в другом файле класса в том же проекте.
Редактировать : одна вещь, которую я не делаюНе думаю, что я ясно дал понять - сама надстройка загружается без ошибок.Существует код, который выполняется для извлечения текущей среды из файла конфигурации и выполняется без проблем.Кажется, ошибка возникает при событии нажатия кнопки, которое показывает область формы после проверки авторизации пользователя.
Кроме того, я взял метод UserIsAuthorized и добавил его в тот же файл .vb, что и событие нажатия кнопки, и ошибка по-прежнему возникает.Как будто приложение не может вызвать код в другом методе, независимо от того, где в проекте найден этот метод, что мне кажется просто непонятным.