Для тех, у кого есть похожие проблемы, вам не нужно удалять надстройки.Происходит следующее: Outlook попытается загрузить все ленты (найденные в вашей ленте xml) в любое окно, в которое заходит пользователь.Тогда он будет жаловаться на отсутствие идентификатора x или y.
Просто убедитесь, что ваш метод GetCustomUI в Ribbon.cs не загружает весь XML-файл ленты сразу, а загружает его для каждого фрагмента.
Если вы не уверены, какие идентификаторы вам нужны, используйте точку останова в GetCustomUI, затем запустите Outlook, просматривайте различные представления (основной, новое письмо, новое назначение, календарь и т. Д.), Чтобы собрать идентификаторы для представлений.при этом вам нужно показать надстройку.
В моем случае мне понадобилось Microsoft.Outlook.Explorer , Microsoft.Outlook.Mail.Compose и Microsoft.Outlook.Appointment .
Поэтому я изменил свой GetCustomUI на:
public string GetCustomUI(string ribbonID)
{
switch (ribbonID)
{
case "Microsoft.Outlook.Explorer":
return GetResourceText("MyAddin.RibbonsForOutlookExplorer.xml");
case "Microsoft.Outlook.Mail.Compose":
return GetResourceText("MyAddin.RibbonForOutlookMailCompose.xml");
case "Microsoft.Outlook.Appointment":
return GetResourceText("MyAddin.RibbonForOutlookAppointment.xml");
default:
return null;
}
}
Конечно, мне пришлось разбить мой Ribbon.xml на три упомянутых XML-файла.выше.Результат: Outlook загружает ТОЛЬКО фрагмент, необходимый для данного экрана (назначение, новое электронное письмо ...), и не будет жаловаться на «не обнаружение идентификатора на экране X или Y».
Наконец, для тех,кто не уверен, почему некоторые пользователи получают эту ошибку, а другие - нет: это происходит из-за опции «Показать ошибки интерфейса пользователя надстройки» (в меню «Настройки» -> «Дополнительно»).Если этот флажок снят, Outlook будет игнорировать ошибки XML с искаженной лентой.Если флажок установлен, пользователи будут получать сообщения об ошибках, связанных с вашей надстройкой (если она существует), а также с другими надстройками.