我们正在创建一个需要引用 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)。
(摘自 Andrew Whitechapel 的《没有 PIA 的多个 Office 版本的加载项》)
否则,我会向您推荐Andrew Whitechapel的以下博客文章: 是否可以为多个版本的Office构建一个加载项?(请参阅 BIG 警告,Microsoft 不正式支持此功能)。
不需要 PIA(这使得部署更加容易)的另一个选项是将 ComImport 与后期绑定一起使用。但是,这比使用互操作程序集慢,但如果自动化代码不在快速路径上,这可能是一个不错的解决方案。你将在同一篇博客文章中找到如何实现此目的的说明:不带 PIA 的多个 Office 版本的加载项
Office 的主互操作程序集对此没有帮助吗?我不确定,因为我不必认真使用它们,但我认为它们会。