Ms office 我是否必须强制客户安装Office Xxxx主互操作程序集?

Ms office 我是否必须强制客户安装Office Xxxx主互操作程序集?,ms-office,Ms Office,如果您尝试引用Office COM对象(就像在其他开发环境中一样),Visual Studio可能会出错 因此,必须使用Microsoft手动转换的已转换类型库,并使其可用于、和 现在看来,为了让我的应用程序运行,它需要Office互操作代码,该代码包含在程序集中 现在,我不想强制客户安装Office 2007主互操作程序集、Office 2003主互操作程序集或Office XP主互操作程序集。我想要一个xcopy部署 如果我设法获得了Microsoft的互操作程序集副本,我是否可以将它们复制

如果您尝试引用Office COM对象(就像在其他开发环境中一样),Visual Studio可能会出错

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

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

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


如果我设法获得了Microsoft的互操作程序集副本,我是否可以将它们复制到“按Bin/Debug”和“按Bin/Release”文件夹中


如果我包括Office 2007互操作程序集,那么如果客户安装了Office 95,它会起作用吗?或者我必须包括Microsoft发布的Office互操作dll的所有版本吗?

这是一个常见的问题,答案相当复杂。MSFT的玛丽·李(Mary Lee)是这方面信息的重要来源:

使用ClickOnce部署最接近于在VSTO上构建的任何应用程序的XCopy安装

此外,请查看此帖子:

最后,米莎有一个很棒的博客:

PIA是特定于您所针对的Office版本的,因此2003年PIA是针对2003年所必需的,2007年PIA是针对2007年所必需的。通过托管代码自动化Office95是我以前没有做过的事情,但我可以想象您直接引用类型库,因此会为您生成一个RCW,而与PIA无关


Colby Africa(MSFT)

如果我设法获得了Microsoft的互操作程序集副本,我是否可以将它们复制到“按Bin/Debug”和“按Bin/Release”文件夹中

这对我有用。当我编译程序时,我让它引用bin中的interop(PIA)DLL,然后以这种方式将其部署给客户

如果我包括Office2007互操作程序集,如果客户安装了Office95,它会工作吗


不,您的mst具有针对目标Word版本的互操作DLL。我想可能可以编写您的代码,以便它检查该计算机上运行的word版本,并在运行时选择正确的互操作,但您需要将它们全部包括在内。

根据我自己的经验:

如果您希望以Office2003及更高版本为目标,那么您应该使用Office2003PIA,并将自己限制为Office2003API。该代码将在Office 2003或更高版本上运行。您仍然可以使用反射调用Office2007函数,但这并不令人愉快

我想如果你的基准版本是Office 2000,情况也差不多——尽管我没有试过,我相信微软自己提供PIA的最早版本是Office 2002(XP)

您可以为2000年创建自己的互操作程序集,我没有理由相信您不能为95年创建互操作程序集,尽管您是我见过的第一个请求95年支持的人!不用说,如果您创建自己的互操作程序集,您将需要将它们与应用程序一起部署

在任何情况下,您都希望使用最高的Office版本作为基线,这样您就可以在不使用反射的情况下支持尽可能多的功能。您应该在只安装了该版本Office的计算机上开发代码

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

XCOPY部署?是的,我也很想这样,但是算了吧。首先,如果您的外接程序将在“高”安全模式下工作,那么您将需要一个代码签名的COM“垫片”位于代码和Office之间,并且需要注册。如果你选择走这条路,我相信VSTO会提供自己的垫片(我没有,因为我需要能够从头开始“驱动”Office,而不是依赖用户来启动应用程序)

部署——以及处理安装和安全问题——是使用.NET开发Office插件最困难的部分之一,当您认为已经完成时,它会在最后出现,这是一个真正的挑战

我的strong建议是省去几天和几周的麻烦,看看你自己。我自己最近才遇到这个问题,从那以后我一直在踢自己,因为这本可以节省我很多时间。它有几个好处,我认为对您很有用:

  • 它允许您创建一个针对Office2000到Office2007(对不起,不是'95'的)的外接程序,而不管您的开发PC上有什么版本
  • 它为您创建了一个安装程序(甚至可以在Vista上运行!),这本身就是值得的
  • 它有自己的COM垫片,并且集成到您不需要担心的程度
  • 它将允许您拥有一个加载项,该加载项在2003年之前的Office版本中具有菜单/工具栏界面,但在2007年具有功能区界面

  • 请注意,我与外接程序Express没有任何关联(最近的客户除外),但同样地,我还没有将我的项目转换为使用它。我所做的初步测试使我相信它相当不错,而且肯定是中小型项目的发展方向。

    +1用于提及外接程序express。我想提到的另一点是,您可以创建针对EXE的自定义任务窗格