【问题标题】:VSTO vs. Primary Interop Assemblies, what's the difference?VSTO 与主互操作程序集,有什么区别?
【发布时间】:2012-09-14 23:05:32
【问题描述】:

我已经开发了一个大型 Office 应用程序级插件,它的工作原理非常棒,但我在理解技术基础方面遇到了问题。

  1. 那么 VSTOPIA 到底有什么用处?
  2. VSTO 是否只是为 Visual Studio 提供适当的项目类型,仅此而已?
  3. Primary Interop Assemblies (PIA) 是否只是用于访问 Office 对象模型的某种包装?
  4. 它们提供的东西和功能是否比我所知道的要多?

【问题讨论】:

    标签: .net visual-studio-2010 vsto ms-office


    【解决方案1】:

    VSTO is the application runtime 通过 PIA 向 Office 子系统提供挂钩(解决方案加载器)。 PIAs are wrappers 围绕构建 Office 的非托管 COM API (IDTExtensibility2)。 PIA 提供托管访问并在 VSTO 运行时之上运行。

    VSTO 附带的项目类型可构建检测依赖项和在运行时加载加载项所需的 deployment manifest

    PIAs provide managed access 到 COM 对象模型,但如果您想更好地控制解决方案的加载方式,它也可以是 supports unmanaged access因此您总是有 VSTO 运行时,但并不总是有 PIA )。

    这个MSDN link provides a great overview of the evolution of PIAs and VSTO 远离IDtExtensibility2,这是另一个加载选项(在 PIA 之外

    【讨论】:

    • @SilverNinja VSTO 需要安装 PIA 吗?
    • 如果您使用的是 VSTO 2010,则无需安装 PIA。默认情况下,interop types are embedded in your add-in assembly。您可以通过更改您包含的每个 office 程序集的 Embed Interop Types 标志来切换此行为。
    • 感谢您确认 SilverNinja。我以为是这样。我看到嵌入在加载项中的互操作。我只需要确保所有其他程序集都设置了嵌入互操作类型标志。
    • 还值得指出的是,VSTO 是 PIA 之上的可选级别(对于我们当中使用 VS Express 版本的人),这使事情变得更容易但不是必需的。 :)
    • 不错的答案,但如何理解“PIA 提供托管访问并在 VSTO 运行时之上运行”? VSTO 使用 PIA 与办公室中的 COM 对象通信
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 2019-04-19
    • 2011-07-15
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多