Я пытался построить архитектуру AddIn и использовал MAF. Основы, которым я следовал, даны здесь, на Microsoft docs
Краткая справка о приложении:
- У меня есть хост-приложение 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: