2012-06-06 11 views
11

Ich habe bereits ein großes Office-Add-In auf Anwendungsebene entwickelt und es funktioniert wie ein Zauber, aber ich habe Probleme, die technische Grundlage zu verstehen. SoVSTO vs. Primäre Interop Assemblies, was ist der Unterschied?

  1. was genau sind VSTO und die PIAs gut?
  2. Ist VSTO nur eine ordnungsgemäße Projekttyp für Visual Studio und das ist es?
  3. Sind die primären Interop Assemblies (PIA) nur eine Art von Wrapper für den Zugriff auf die Office Object Model?
  4. Haben beide mehr Dinge und Funktionen, als mir bekannt sind?

Antwort

10

VSTO is the application runtime, die Haken (Lösung loader) in das Office-Subsystem über PIA bietet. PIAs are wrappers um die nicht verwaltete COM-API (IDTExtensibility2), aus der Office erstellt wird. PIAs bieten verwalteten Zugriff und werden oberhalb der VSTO-Laufzeit ausgeführt.

VSTO wird mit Projekttypen ausgeliefert, die das deployment manifest zum Erkennen von Abhängigkeiten und zum Laden des Add-Ins zur Laufzeit erstellen.

Die PIAs provide managed access auf das COM-Objekt-Modell, aber es sollte auch supports unmanaged access wollen Sie mehr Kontrolle darüber, wie Ihre Lösung geladen ist (daher immer Sie haben VSTO-Laufzeit, aber nicht immer PIAs).

Diese MSDN link provides a great overview of the evolution of PIAs and VSTO weg von IDtExtensibility2, die eine andere Ladeoption ist (außerhalb von PIAs)

+0

@SilverNinja VSTO PIA Installation benötigt? – JohnZaj

+1

Wenn Sie VSTO 2010 verwenden, müssen Sie die PIAs nicht installieren. Standardmäßig sind die [Interop-Typen in Ihre Add-In-Assembly eingebettet] (http://msdn.microsoft.com/en-us/library/ee317478.aspx). Sie können dieses Verhalten ändern, indem Sie für jede hinzugefügte Office-Assembly das Kennzeichen ** Interop-Typen einbetten ** setzen. – SliverNinja

+1

Danke für die Bestätigung von SilverNinja. Ich dachte, das wäre der Fall. Ich sehe die Zwischenbereiche in ein Add-In eingebettet. Ich muss nur sicherstellen, dass für alle anderen Assemblies das Flag "Interp-Typen einbetten" gesetzt ist. – JohnZaj

Verwandte Themen