2011-06-21 54 views
14

我们创建了一个使用Office 2007(Excel 2007)从Excel工作表读取数据的应用程序。然而。我注意到,当我想在安装了Office 2003的系统上部署应用程序时,它会崩溃,因为需要为此版本的Office引用其他PIA(和其他dll)。使用Office自动化支持不同的Office版本

我是否需要编译我的应用程序的不同版本才能支持不同版本的Office,或者是否存在针对此问题的更优雅的解决方案?

我使用Visual Studio 2010(C#)和.Net 4.0平台。

回答

18

当您使用.NET 4时,您可以使用“嵌入式”PIA(又名“无PIA”)。更改Office引用上的选项,以便“嵌入Interop类型”为True。

只要您只使用您部署的计算机上支持的Office功能,您应该没问题。

这也意味着: - 您不必担心PIA本身不存在在目标机器上 - 任何方法或性能,这是在原来的COM接口VARIANT类型的使用,现在代表dynamic在你的代码中,这可以使你的生活更简单

+0

这会让我2年前的生活变得容易得多。在vs05中编写vsto插件是一件麻烦事。 – asawyer

+0

这解决了我的问题。非常感谢你。 – Chris

0

您可以参考PIA的多个版本的办公室,并找出运行时路由您的呼叫。

+0

这就是你不应该做的:http://blogs.msdn.com/b/andreww/archive/2007/06/15/can-you-build-one -add-in-for-multiple-versions-of-office.aspx – Andy

+0

这实际上是一个**好的主意。我也想这样做,因为在我的公司我们有安装了不同Office版本的系统。我希望我的应用程序支持任何**版本。 – Bitterblue

相关问题