问题 VSTO与主要互操作程序集有什么区别?


我已经开发了一个大型的Office应用程序级加载项,它就像一个魅力,但我在理解技术基础时遇到了问题。

  1. 到底究竟是什么 VSTO 和 PIA的 好吗?
  2. 是否 VSTO 只是提供一个合适的 项目类型 对于Visual Studio而言就是这样吗?
  3. 是的 主互操作程序集 (PIA)只是用于访问的一些包装器 Office对象模型
  4. 它们都提供了比我所知更多的东西和功能吗?

3765
2018-06-06 12:53


起源



答案:


VSTO是应用程序运行时 提供钩子(解决方案装载)通过PIA进入Office子系统。 PIA是包装纸 围绕非托管COM API(IDTExtensibility2)Office是由。 PIA提供托管访问并在VSTO运行时之上运行。

VSTO附带了构建它的项目类型 部署清单 检测依赖项并在运行时加载加载项所必需的。

PIA提供托管访问 到COM对象模型,但它也 支持非托管访问 您是否希望更好地控制解决方案的加载方式(因此,您总是拥有VSTO运行时,但并不总是PIA)。

这个 MSDN链接提供了PIA和VSTO演变的精彩概述 远离 IDtExtensibility2 这是另一个加载选项(PIA之外


10
2018-06-11 14:43



@SilverNinja VSTO是否需要PIA安装? - JohnZaj
如果您使用的是VSTO 2010,则无需安装PIA。默认情况下 互操作类型嵌入在加载项程序集中。您可以通过更改来切换此行为 嵌入互操作类型 您包含的每个办公室装配的标志。 - SliverNinja - MSFT
感谢您确认SilverNinja。我以为是这种情况。我看到嵌入在一个加载项中的interops。我只需要确保所有其他程序集都设置了嵌入互操作类型标志。 - JohnZaj
很好的答案和链接的thx。 - woodykiddy
值得指出的是,VSTO是PIA之上的可选级别(对于我们这些使用VS Express版本的人来说),这使得事情变得更容易但不是必需的。 :) - Cor_Blimey


答案:


VSTO是应用程序运行时 提供钩子(解决方案装载)通过PIA进入Office子系统。 PIA是包装纸 围绕非托管COM API(IDTExtensibility2)Office是由。 PIA提供托管访问并在VSTO运行时之上运行。

VSTO附带了构建它的项目类型 部署清单 检测依赖项并在运行时加载加载项所必需的。

PIA提供托管访问 到COM对象模型,但它也 支持非托管访问 您是否希望更好地控制解决方案的加载方式(因此,您总是拥有VSTO运行时,但并不总是PIA)。

这个 MSDN链接提供了PIA和VSTO演变的精彩概述 远离 IDtExtensibility2 这是另一个加载选项(PIA之外


10
2018-06-11 14:43



@SilverNinja VSTO是否需要PIA安装? - JohnZaj
如果您使用的是VSTO 2010,则无需安装PIA。默认情况下 互操作类型嵌入在加载项程序集中。您可以通过更改来切换此行为 嵌入互操作类型 您包含的每个办公室装配的标志。 - SliverNinja - MSFT
感谢您确认SilverNinja。我以为是这种情况。我看到嵌入在一个加载项中的interops。我只需要确保所有其他程序集都设置了嵌入互操作类型标志。 - JohnZaj
很好的答案和链接的thx。 - woodykiddy
值得指出的是,VSTO是PIA之上的可选级别(对于我们这些使用VS Express版本的人来说),这使得事情变得更容易但不是必需的。 :) - Cor_Blimey