Надстройка Outlook отключена из-за слишком медленной - PullRequest
0 голосов
/ 18 февраля 2019

Я занимаюсь разработкой простой надстройки для Outlook с C #.Теперь, когда я тестировал релиз, внезапно Outlook распечатал сообщение об ошибке и отключил мою надстройку:

This add-in caused Outlook to start slowly. (1.594 seconds)

Я не уверен, что является причиной этого.Все, что я делаю Onload, это:

Кнопка ленты
Я использую одну кнопку ленты, которую я инициализирую в своем AddIn следующим образом:

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
    {
      return new MyRibbonButton();
    }

Конструктор кнопки ленты
Кнопка ленты инициализирует объект.Так что пока ничего особенного.

public MyRibbonButton()
{
    this.guiSettings = new AppSettingsManager(root.localmachine, "GUI", false);
}

...

public AppSettingsManager(root type, string subpath, bool writable)
{
    if (subpath != "")
    {
        this.PATH += @"\" + subpath;
    }
    this.type = type;
    this.writable = writable;
}

Значок
В том же классе MyRibbonButton я объявляю значок, который хочу использовать для своей кнопки, в зависимости от значения в реестре.

public Bitmap imageSuper_GetNotifyImage(IRibbonControl control)
{
    switch (guiSettings.GetValueInt32("Icon", 1))
    {
        case 1:
            return Properties.Resources.icon1;
        case 2:
            return Properties.Resources.icon2;
        case 3:
            return Properties.Resources.icon3;
        default:
            return Properties.Resources.icon1;
    }

}

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

1 Ответ

0 голосов
/ 18 февраля 2019

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

Единственный способ, которым ясмог обойти эту проблему - создать заглушку надстройки в Delphi (C ++ будет работать так же хорошо, если не лучше), которая ничего не делала, кроме загрузки в Outlook (примерно через 20 мс) и запуска таймера.Когда таймер срабатывает (Outlook будет бездействовать и не будет следить за надстройкой), он загрузит подчиненное .Net дополнение с помощью интерфейса IManagedAddin .

...