2008-12-31 61 views
5

看起来,如果您尝试引用Office COM对象(就像您在其他开发环境中那样),Visual Studio会出错 - and it just won't work我是否必须强制客户安装Office Xxxx主互操作程序集?

因此,您必须使用Microsoft手动转换的转换类型库,并使其可用于downloaddownloaddownload

现在看来,为了让我的应用程序运行,它需要包含在程序集中的Office Interop代码。

现在我不想强制客户安装Office 2007主互操作程序集,Office 2003主互操作程序集或Office XP主互操作程序集。我想要一个xcopy部署。

如果我设法弄到微软的互操作程序集副本,我可以通过Bin/Debug和Bin/Release文件夹复制它们吗?

如果我包含Office 2007互操作程序集,如果客户安装了Office 95,它会工作还是必须包含所有版本的Office Interop dll的Microsoft发布过?

回答

4

这是一个相当复杂的答案的常见问题。 MSFT的玛丽李是有关这个伟大的资源:

http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx

使用ClickOnce部署的是你会得到一个安装的XCopy建立在VSTO任何应用程序的最接近的一次。

此外,还要检查这个帖子:

http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/1666d2b0-a4d0-41e8-ad86-5eab3542de1e/

最后,米莎有很大的博客:

http://blogs.msdn.com/mshneer/archive/2006/01/05/deployment-articles.aspx

的PIA的是特定于你的目标的Office版本,所以2003年的PIA是瞄准2003年所必需的,而2007年的PIA是2007年所必需的。通过托管代码实现Office 95自动化是我以前没有做过的事情,但我可以想象你直接参考了为类型库创建一个RCW,并且与PIA无关。

HTH

科尔比非洲(MSFT)

0

如果我设法得到的互操作程序集微软的拷贝一抱,我可以把它们复制到由滨/调试和斌/释放文件夹?

它为我工作。当我编译程序时,我已经将它引用到bin中的interop(PIA)dll,然后以这种方式将其部署到客户。

如果我包含Office 2007互操作程序集,如果客户安装了Office 95,它会工作吗?

不,你最好有你所定位的Word版本的interop dll。我想可能可以编写代码,以便在该机器上运行运行的单词版本,并在运行时选择正确的interop,但需要将它们全部包含在内。

2

从我自己的经验:

如果你想针对Office 2003和上面,然后你会使用Office 2003 PIA的 - 与自己限制到Office 2003的API。该代码将在Office 2003上运行或更高版本。您仍然可以使用反射调用Office 2007函数,但这并不令人愉快。

我想这是大同小异的故事,如果你的基线版本的Office 2000 - 虽然我还没有尝试过,而且我相信微软自己提供PIA的是Office 2002中(XP)的最早版本。

您可以创建自己的Interop组件2000年,我已经没有理由相信,你不能为'95做到这一点,虽然你是我见过的第一人问'95支持!不言而喻,如果您创建自己的Interop程序集,则需要将它们与您的应用程序一起部署。

在任何情况下,您都希望使用最高的办公版本作为您的基准,这样您就可以支持尽可能多的功能,而无需诉诸反思。您应该在具有的机器上开发您的代码,只有安装了该版本的Office。

在我的情况下,我开发的是Office 2003,并且知道我的用户也有2003.因此,我要求他们确保他们已启用“.NET可编程性支持”功能(您可以通过Office 2003安装程序通过添加/删除程序,如果您选择更改选项)。该选项基本上将PIA安装到GAC。对于那些不能这样做的用户,我的安装程序会检测到缺少PIA并在安装我的应用程序之前安装它们(就像它为.NET框架一样)。

XCOPY部署?是的,我也想那样 - 但忘记了。首先,如果你的加载项要在'高'安全模式下工作,那么你需要一个代码签名的COM'shim'来放在代码和Office之间,并且需要注册。我相信如果你选择沿着这条路走下去(我没有,因为我需要能够从头开始'驱动'Office而不是依靠用户来启动应用程序),VSTO提供了自己的垫片。

部署 - 并处理安装&安全问题 - 是.NET的Office Add-in开发中最难的部分之一,它是一个真正的推动者,它在最后完成时就认为你已经完成。

我的建议是节省你自己的几天和几周的麻烦,并看看Add-in Express。我最近才碰到过这个问题,自那以后一直在踢我自己,因为它能为我节省很多时间。它有几个好处,我觉得这是对你有用:

  1. 它允许你创建一个单一的外接靶向的Office 2000到Office 2007(对不起,不是95年),不管你发生什么版本的有你的开发电脑。
  2. 它为您创建一个安装程序(甚至可以在Vista上运行!),这本身就是值得的。
  3. 它带有自己的COM垫片,并集成到你不需要担心它的程度。
  4. 它可以让你有一个单独的加载项,在Office版本高达2003的菜单/工具栏界面,但在2007年丝带接口。

请注意,我与Add-in Express没有联系(不是最近的客户),但同样我还没有将我的项目转换为使用它。我所做的初步测试让我相信这是相当不错的 - 而绝对是中小型项目的选择。

+0

+1用于提及加载项快递。另一点我想提到的是,您可以创建自定义任务窗格,针对Excel 2000到2003.所有这些都以非常合理的价格提供。一个开源的替代品(虽然没有多少装饰),你可能想看看的是Excel DNA,这也是非常好的。注意:我不以任何方式附属于Add-in express或ExcelDNA项目(除了使用它们) – quixver 2012-06-11 14:13:11

相关问题