VSTO AddIn неожиданно не может вызывать внешние методы - PullRequest
0 голосов
/ 10 декабря 2018

У меня очень странная (и непоследовательная) проблема с надстройкой 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, что и событие нажатия кнопки, и ошибка по-прежнему возникает.Как будто приложение не может вызвать код в другом методе, независимо от того, где в проекте найден этот метод, что мне кажется просто непонятным.

1 Ответ

0 голосов
/ 10 декабря 2018

В прошлом была проблема с конкурирующими надстройками.Если одному дополнению нужна другая версия .Net, чем другой, первый загруженный выиграет, а другой потерпит неудачу.В зависимости от версии office это может произойти, потому что офисное приложение работает только с одной версией .Net, но не с кратным числом.

Проверьте другие надстройки на сбойных ПК и отключите;это может дать ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...