Je ne peux pas jurer que ce que je vais offrir réglerait le problème RibbonBase, mais j'ai reçu exactement le même message d'erreur par rapport à une classe que j'essayais d'utiliser dans Access, et je me suis retrouvé à lire cette question & réponse, donc je voudrais offrir ma solution car je soupçonne fortement qu'il pourrait également résoudre le problème RibbonBase.
Le problème est de référencer une CLASSE plutôt qu'une interface. Si vous recherchez "n'est pas autorisé lorsque son assembly est lié à l'aide du mode No-PIA" dans http://msdn.microsoft.com/en-us/library/h8c469ey.aspx, vous pouvez voir d'où je viens.
Cela a du sens - je peux voir que rendre les interfaces disponibles donne une meilleure conception d'objet (en séparant l'interface de l'implémentation) et réduirait également les métadonnées requises.
Dans Access, j'essayais de référencer ControlClass, et quand je suis passé à simplement utiliser "Control" (c'est l'interface), tout a bien fonctionné pour moi. D'après ce que j'ai lu, je crois que la solution SLaks, bien qu'elle fonctionnera sans aucun doute, nécessitera que les assemblages Interop soient installés sur la machine sur laquelle la solution est déployée, où en passant à une interface (si possible) vous permet ensuite de déployer sans les assemblages Interop. Pour moi, cela rend ma suggestion plus attrayante, si elle pouvait être appliquée dans le cas de "RibbonBase".