Исключение при отладке с использованием Windows MAF (конвейер AddIn) - PullRequest
0 голосов
/ 07 апреля 2019

Я пытался построить архитектуру AddIn и использовал MAF. Основы, которым я следовал, даны здесь, на Microsoft docs

Краткая справка о приложении:

  1. У меня есть хост-приложение wpf, которое загружает сборку addIn во время выполнения. Надстройки реализуют контракт (интерфейс) и снабжены атрибутом, который помогает хосту обнаружить его. Это стандартная вещь в MAF, поэтому я не хочу, чтобы здесь было больше информации, но если это поможет, то я буду рад добавить больше информации. Все хосты приложений / надстройки на моем ноутбуке, которые я запускаю в профиле администратора.

При загрузке надстроек главный код хоста:

    string appPath = Environment.CurrentDirectory + "\\Pipeline";
    string[] warnings = AddInStore.Rebuild(appPath);
       if (warnings.Length > 0)
          {
             string msg = "Could not rebuild pipeline:";
             foreach (string warning in warnings) msg += "\n" + warning;
             MessageBox.Show(msg);
             return;
          }

   Collection<AddInToken> addInTokens = AddInStore.FindAddIns(typeof(IWPFAddInHostView), appPath);

   AddInToken wpfAddInToken = addInTokens[0];

   // the only line I can see that has something to do with
   // security permissions
   this._wpfAddInHostView = wpfAddInToken.Activate<IWPFAddInHostView>(AddInSecurityLevel.Internet);

   FrameworkElement addInUI = this._wpfAddInHostView.GetAddInUI();
                this.addInUIHostGrid.Children.Add(addInUI);

Этот код работает нормально (загружает надстройку, и при нажатии кнопки в пользовательском интерфейсе надстройки появляется окно с ожидаемым сообщением), когда я его запускаю, но в режиме отладки выдает следующее исключение и вылетает (загружает надстройку правильно, но при нажав на кнопку, когда возникает исключение), я выделил единственную строку, касающуюся разрешений безопасности, выше, не уверен, почему это должно происходить только в режиме отладки и даже почему это происходит.

Кроме того, я не знаю 2 вопросов в вопросе, но я не видел, чтобы многие люди использовали MAF, и на странице продукта не указана активная поддержка, интересно, если я делаю неправильный выбор.

System.Security.SecurityException HResult = 0x8013150A
Сообщение = Запрос разрешения типа 'System.Security.Permissions.UIPermission, mscorlib, версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089 'не удалось.
Source = StackTrace:

1 Ответ

0 голосов
/ 07 апреля 2019

Изменение разрешения безопасности

 this._wpfAddInHostView = wpfAddInToken.Activate<IWPFAddInHostView>(AddInSecurityLevel.Internet);

до полного доверия работает.

this._wpfAddInHostView = wpfAddInToken.Activate<IWPFAddInHostView>(AddInSecurityLevel.FullTrust);

Таким образом, очевидно, что это связано с уровнем безопасности в Интернете, это частичное доверие. Но мне все еще интересно, почему это исключение возникает только при запуске системы в режиме отладки?

...