我目前正在开发一个c#项目,我需要访问Outlook。开发工作是在两台不同的机器上完成的,其中一台机器安装了办公室,另一台则没有。我previously询问如何针对outlook com对象编译我的项目,其中一条评论建议我针对办公室主互操作程序集或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无法处理同一程序集的多个版本,因此不允许我安装较新版本。
不知怎的,我没有履行requirements。这些基本上都是XPsp2,以及.Net 1.1或更高版本,我都有。要求部分还提到,下载适用于Office 2007,我没有安装,但我不认为这是一个要求。这既是因为未指定为要求,也是因为Hans Passant在对my original question的评论中非常确定PIA可以专门用于开发没有安装Office的情况,所以它没有意义将Office作为先决条件。
那么有没有人知道为什么Office 2007 PIA没有正确安装,或者我能做些什么来接近答案?如果您需要更多信息,请告诉我。感谢。
答案 0 :(得分:14)
我刚才用类似的项目打了这个。如果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,或尝试使用Google搜索并查看是否有单独的VSTO下载
否则,我只是将PIA从此文件夹复制到另一个开发框上的类似位置。
答案 1 :(得分:2)
第一点,我100%确定已经实现了GAC以支持相同程序集的版本控制,您可以构建一个名为myCode.dll的程序集并将其版本1.0注册到GAC,然后构建版本1.1和2.0并将两者都添加到GAC,即使它们都具有相同的文件名,GAC也将保留两者,每个应用程序都能够使用正确的版本,具体取决于可用的程序集绑定信息,基本上每个应用程序都有一个参考除非另有说明,版本1.0仍然会获得它,并且不受新版本的影响。
最后,当您在gac中列出Outlook PIA的存在时,您只能看到最新的可用版本,而不是所有版本,但您肯定无论如何都应该能够在GAC中推送另一个版本。