我们正在创建一个需要引用Office 2003或Office 2007 COM对象的Windows窗体应用程序(C#或VB.NET),具体取决于安装的Office版本。处理此场景并在运行时引用正确的COM对象的最佳方法是什么?

有帮助吗?

解决方案

除非您想使用Office 2007对象模型的任何新添加的对象和方法,否则可以构建引用Office 2003 PIA,只需确保在目标系统上部署了正确版本的PIA:

  

解决此问题的另一种方法是删除对后续PIA的依赖性。由于Office中的高度向后兼容性,您可以放心地假设,如果您的加载项适用于Office 2003(使用Office 2003 PIA),那么它也应该适用于Office 2007(使用Office 2007 PIA)。

     

(来自安德鲁·怀特查佩尔的“没有PIA的多个Office版本的加载项”

否则我会向您推荐Andrew Whitechapel的以下博客文章:你能为多个版本的Office构建一个加载项吗?(请参阅BIG警告,这是不正式支持的由微软)。

您不需要PIA的另一个选项(这使得部署更容易)将使用 ComImport 和后期绑定。然而,这比使用互操作程序集慢,但如果自动化代码不在快速路径上,这可能是一个很好的解决方案。您将在同一篇博文中找到如何实现此解释的说明:没有PIA的多个Office版本的加载项

其他提示

Office的Primary Interop程序集会不会对此有所帮助吗?我不确定,因为我没有认真使用它们,但我认为他们会这样做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top