VSTO2010: ссылка на класс RibbonBase недопустима, когда его сборка связана в режиме No-PIA - PullRequest
3 голосов
/ 20 октября 2010

Когда я пытаюсь скомпилировать надстройку VSTO Outlook, я получаю эту ошибку:

Ссылка на класс 'RibbonBase' не разрешена, когда его сборка связана с использованием режима без PIA

Не могу найти решение этой проблемы в Интернете.

Есть идеи?

Спасибо!Mojo

Ответы [ 2 ]

14 голосов
/ 20 октября 2010

Некоторые библиотеки COM, включая эту, не поддерживают режим No-PIA.

Измените Embed Interop Type на false в свойствах ссылки.

4 голосов
/ 27 мая 2012

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

Проблема заключается в ссылке на класс, а не на интерфейс.Если вы ищете «не разрешено, когда сборка связана с использованием режима без PIA» в http://msdn.microsoft.com/en-us/library/h8c469ey.aspx,, вы можете увидеть, откуда я это взял.

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

В Access я пытался ссылаться на ControlClass, и когда я переключился на использованиепросто «Управление» (это интерфейс), тогда у меня все работало нормально.

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

...