您好,我一直在与一些复杂性作斗争,以了解 MS Office 的主要互操作程序集 (PIA) 的部署。我在 VS 2008 中内置了基于纯 com 技术的 Visual Studio Com Add-IN(更多信息不是 VSTO,请参见底部),它引用了 2003 Primary Interop Assemblies,但该加载项可用于 2003、2007 或现在 2010办公机器。因为我不知道客户将使用 2003、2007 还是 2010,所以我不能简单地部署一个 PIA 版本作为先决条件(除非我制作了 3 个我不想做的安装程序)。现在,我的理解是,当您按照此处的步骤操作时要将 2003 和 2007 PIA 添加到 Visual Studio (2008) 安装程序包中显示的先决条件列表中,先决条件足够智能,可以确定在您的目标客户端上运行的 Office 版本。因此,如果您要选择 2003 主互操作程序集和 2007 主迭代程序集作为先决条件,那么当它安装在具有 2003 的机器上时,它应该足够智能,只有在这台机器上缺少 2003 PIA 时才尝试添加 2003 PIA 并且如果这是 2007 Office 机器,那么它将只安装 2007 PIA(而不尝试安装 2003 PIA)。
问题1这是一个正确的理解(前提包是智能的,只能根据Office的版本安装它需要的东西吗?)
问题 2有没有办法让 2010 PIA 像 2003 和 2007 一样显示在 VS 2008 的先决条件列表中?我不想将此项目升级到 VS 2010 b/c,它现在被认为是一个遗留应用程序,来自世界各地的许多客户都在使用它。
问题 3尽管实际的程序集引用了 2003 主要互操作,但我目前没有将这些互操作与加载项一起部署到安装位置。相反,我假设如果我可以安装正确的 PIA,那么我不需要在安装路径中显示它,因为 PIA 将在 GAC 中。但是,一种可能的方法可能是在安装路径中仅包含引用的 2003 程序集(在我的情况下为 excel 和 word),而不用担心 PIA。我怀疑这将适用于 2003 机器,但可能不适用于 2007 和 2010 机器 b/c,即使在运行时在程序集的安装路径中找到引用的 2003 互操作,我认为如果没有GAC 中的 Policy.11.0.Microsoft.Office.Interop.Excel/Word(etc),那么 2007 和 2010 可能不知道如何处理 11。0 (2003) 互操作(我认为 Policy.11.0.Microsoft.Office.Interop 文件将对 2003 互操作的请求重定向到 2007 或 2010)。对此有什么想法吗?
问题 4: Framework 2.0 应用程序 Office 加载项和 Office 2003 存在一个众所周知的错误,即无法加载加载项。KB907417 aka KB908002 解决了这个问题。如果您在 3.0 或 3.5 框架上开发(并使 3.0 或 3.5 成为先决条件),是否有人知道此 KB 是否必要,因为此问题特定于框架 2.0?或者知识库是否仍然需要部署 b/c 是 office 2003 是问题而不是框架的版本?
从我的 3 个问题可以看出,我试图确定的是我们是否可以通过 VS 设置实用程序构建一个安装程序。如果 PIA 可以用一个安装程序完成,但上面的 KB 是障碍(因为也许答案会回来,即使在 3.0 或 3.5 框架 2003 上,客户也需要 KB),那么一个安装程序的路径可能就是制作KB 是全面的先决条件,并将其安装在 2007 或 2010 机器上,尽管它们在技术上不需要它们。对该选项的任何想法也将不胜感激。最后,我知道现在通常使用 VSTO 而不是纯托管框架代码来为 excel 或 word 编写托管 Com Add-IN,但这不是目前将遗留应用程序更改为这个方向的选项。据报道,4.