16

我目前正在处理 ac# 项目,我需要访问 Outlook。开发是在两台不同的机器上完成的,其中一台安装了办公室,另一台没有。我之前询问过如何针对 Outlook com 对象编译我的项目,其中一条评论建议我针对 Office 主互操作程序集或 PIA 进行编译。在我下载的Office 2007 PIA中,有一个 msi 文件,它应该为 Office 的不同部分安装许多 PIA。我的问题是这似乎不会发生。在我没有办公室的机器上,打字后

msiexec /i o2007pia.msi

在提示符下,Windows 安装程序启动,显示“请稍候,Windows 正在配置 Microsoft Office 2007 主要互操作程序集。正在收集所需信息”的消息框以及大约 33% 的进度条,之后消失,之后

gacutil -l microsoft.office.interop.outlook

对于 Office 2007 没有产生任何结果(我确实得到了一个结果,它的版本为 10.0.4504.0,是早期安装尝试使用错误的 Office 版本的结果。但 Office 2007 PIA 的主要版本为 12。)

我看到了一些可能的解释,但我都不相信:

  • GAC 无法处理同一程序集的多个版本,因此不允许我安装更新版本。

  • 不知何故,我不满足要求。这些基本上是 XPsp2 和 .Net 1.1 或更高版本,我都有。要求部分还提到,下载适用于我尚未安装的 office 2007,但我认为这不是必需的。这既是因为 is 没有被指定为要求,也是因为 Hans Passant 在对我原来的问题的评论中非常确定 PIA 可以专门用于在没有安装 Office 的情况下进行开发,所以没有任何意义办公室为先决条件。

那么有没有人知道为什么 Office 2007 PIA 没有正确安装,或者我可以做些什么来接近答案?如果您需要更多信息,请告诉我。谢谢。

4

2 回答 2

15

不久前,我通过一个类似的项目遇到了这个问题。如果计算机上已经安装了 Office,PIA 可再发行组件只会安装 PIA(这很有意义,但在部署时可能会很烦人)

Visual Studio 应该将 Office PIA 安装到它自己的安装目录下的文件夹中 - 例如,在我的机器上,我有一个所有 PIA 的副本:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14

可能只有在安装 VS 时您的机器上有 Office 时才会安装这些,或者 VS 安装程序中可能有一个安装选项来安装 VSTO(Visual Studio Tools for Office)。

如果您的问题只是与在没有 Office 的开发机器上运行构建有关,那么您可以尝试重新运行 VS 安装程序并查看是否有安装 VSTO 的选项,或者尝试谷歌搜索并查看如果有单独的 VSTO 下载

否则,我只会将此文件夹中的 PIA 复制到另一个 Dev 框上的类似位置。

于 2011-02-22T09:52:56.480 回答
2

对于第一点,我 100% 确定 GAC 已实现支持相同程序集的版本控制,您可以构建一个名为 myCode.dll 的程序集并将其版本 1.0 注册到 GAC,然后构建版本 1.1 和 2.0 并将两者都添加到 GAC,即使它们都具有相同的文件名,GAC 也会保留它们,并且每个应用程序都将能够根据可用的程序集绑定信息使用正确的版本,基本上每个应用程序都包含对该版本的引用除非指定,否则 1.0 仍然可以获取它,并且不受新版本存在的影响。

最终,当您在 gac 中列出 Outlook PIA 的存在时,您只会看到最新的可用版本,而不是所有版本,但您肯定应该能够以某种方式在 GAC 中推送另一个版本。

于 2011-02-21T20:37:21.450 回答