2012-06-06 3 views
11

J'ai déjà développé un grand complément d'application Office et ça fonctionne comme un charme, mais j'ai du mal à comprendre la base technique.VSTO vs Primary Interop Assemblies, quelle est la différence?

  1. Alors qu'est-ce exactement sont VSTO et la PIA bon?
  2. Est-ce que VSTO suffit de fournir un vrai projet de type pour Visual Studio et c'est tout?
  3. Les ensembles d'interopérabilité principaux (PIA) sont-ils simplement une sorte de wrapper permettant d'accéder au Office Object Model?
  4. Est-ce que les deux fournissent plus de choses et de fonctionnalités que je ne le pense?

Répondre

10

VSTO is the application runtime qui fournit des crochets (chargeur de solution) dans le sous-système Office par PIA. PIAs are wrappers autour de l'API COM non gérée (IDTExtensibility2) à partir de laquelle Office est construit. Les assemblys PIA fournissent un accès géré et s'exécutent au-dessus du runtime VSTO.

VSTO est fourni avec les types de projets qui génèrent le deployment manifest requis pour détecter les dépendances et charger votre complément lors de l'exécution.

Le PIAs provide managed access à l'objet COM-modèle, mais il a également supports unmanaged access si vous voulez plus de contrôle sur la façon dont votre solution est chargée (donc vous avez toujours l'exécution VSTO, mais pas toujours PIA).

Ce MSDN link provides a great overview of the evolution of PIAs and VSTO loin de IDtExtensibility2 qui est une autre option de chargement (de l'extérieur de PIA)

+0

@SilverNinja ne VSTO nécessitent l'installation PIA? – JohnZaj

+1

Si vous utilisez VSTO 2010, vous n'avez pas besoin d'installer les assemblys PIA. Par défaut, les types [interop sont incorporés dans votre assembly de complément] (http://msdn.microsoft.com/en-us/library/ee317478.aspx). Vous pouvez basculer ce comportement en modifiant l'indicateur ** Intégrer les types d'interopérabilité ** pour chaque assembly de bureau que vous incluez. – SliverNinja

+1

Merci d'avoir confirmé SilverNinja. Je pensais que c'était le cas. Je vois l'interops intégré dans un complément. Je dois juste m'assurer que tous les autres assemblys ont le drapeau Embed Interop Types. – JohnZaj

Questions connexes