在Winforms应用程序中选择Office 2003/2007 COM对象(正确的一个)
时间:2020-03-06 14:59:03 来源:igfitidea点击:
我们正在创建一个Windows Form应用程序(Cor VB.NET),该应用程序需要引用Office 2003或者Office 2007 COM对象,具体取决于安装的Office版本。处理这种情况并在运行时引用正确的COM对象的最佳方法是什么?
解决方案
Office的主要Interop程序集对此没有帮助吗?我不确定,因为我没有认真使用它们,但我认为它们会使用。
除非我们要使用Office 2007对象模型的任何新添加的对象和方法,否则都可以构建引用Office 2003 PIA的方法,只需确保将正确版本的PIA部署在目标系统上即可:
Another way around this problem is to remove the dependency on the later PIAs. Because of the high degree of backwards compatibility in Office, you can safely assume that if your add-in works on Office 2003 (with the Office 2003 PIAs), then it should also work on Office 2007 (with the Office 2007 PIAs). (from Add-ins for Multiple Office Versions without PIAs by Andrew Whitechapel)
否则,我将向我们推荐安德鲁·怀特查佩尔(Andrew Whitechapel)撰写的以下博客文章:我们可以为多个版本的Office构建一个外接程序吗? (请参阅BIG警告,Microsoft尚未正式支持此警告)。
不需要PIA(这使部署更加容易)的另一种选择是将ComImport与后期绑定一起使用。但是,这比使用互操作程序集要慢,但是如果自动化代码不在快速路径上,则这可能是一个很好的解决方案。我们可以在同一博文中找到有关如何实现此目的的说明:没有PIA的多个Office版本的加载项