思想决定人生,态度改变一切

成功者找方法,失败者找借口! 做事先做人;安分做人,本分做事!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

摘要:了解如何获取并安装 Office 2003 主 interop 程序集 (PIA) 和如何对其进行引用以及疑难解答。


本页内容
 简介 
 获取 Office 2003 PIA 
 安装 Office 2003 PIA 
 使用 Office 2003 PIA 
 其他资源 

简介
在 Microsoft Office 2003 中,您可以通过使用主 interop 程序集 (PIA) 来使用由 Office 应用程序公开的 COM 对象。在本文中,将对如何获取、安装以及引用 PIA 进行阐释。

有关 PIA 和 interop 程序集以及如何根据由 Office 2003 公开的接口和类来以托管代码进行编程的详细信息,您可以从许多关于该主题的文章中找到。有关 PIA 和 interop 程序集及其使用的信息,请参阅 Primary Interop Assemblies (PIAs) 和 A Primer to the Office XP Primary Interop Assemblies。

请参阅其他资源获取文章列表,这些文章提供了有关由 Office 向托管代码公开的类和接口的详细信息。

返回页首
获取 Office 2003 PIA
以下表格列出了可用于 Office 2003 的 PIA。表 1 列出了具有相同版本号以及用相同密钥签署的 Microsoft Office 2003 应用程序和组件类型库。这些应用程序的版本号是 11.0.0.0,公钥标记为 71e9bce111e9429c。 

表 2 列出了具有的版本号以及签署的密钥与表 1 所列不同的 Office 2003 应用程序和组件类型库。

表 3 列出了由 Microsoft Visual Studio .NET 2003 提供并包含在 Office 2003 系列产品中的 PIA。

表 1. 具有相同版本号以及用相同密钥签署的 Office 2003 应用程序和组件类型库 
Office 2003 应用程序或组件 主 Interop 程序集名 主 Interop 程序集命名空间 
Microsoft Access 11.0 Object Library
 Microsoft.Office.Interop.Access.dll
 Microsoft.Office.Interop.Access
 
Microsoft Excel 11.0 Object Library
 Microsoft.Office.Interop.Excel.dll
 Microsoft.Office.Interop.Excel
 
Microsoft Forms 2.0 Object Library
 Microsoft.Vbe.Interop.Forms.dll
 Microsoft.Vbe.Interop.Forms
 
Microsoft FrontPage 6.0 Page Object Reference Library
 Microsoft.Office.Interop.FrontPageEditor.dll
 Microsoft.Office.Interop.FrontPageEditor
 
Microsoft FrontPage 6.0 Web Object Reference Library
 Microsoft.Office.Interop.FrontPage.dll
 Microsoft.Office.Interop.FrontPage
 
Microsoft Graph 11.0 Object Library
 Microsoft.Office.Interop.Graph.dll
 Microsoft.Office.Interop.Graph
 
Microsoft InfoPath 1.0 Type Library
 Microsoft.Office.Interop.InfoPath.dll
 Microsoft.Office.Interop.InfoPath
 
Microsoft Office 11.0 Object Library
 Office.dll
 Microsoft.Office.Core
 
Microsoft Office Outlook View Control
 Microsoft.Office.Interop.OutlookViewCtl.dll
 Microsoft.Office.Interop.OutlookViewCtl
 
Microsoft Office Web Components 11.0
 Microsoft.Office.Interop.Owc11.dll
 Microsoft.Office.Interop.Owc11
 
Microsoft Outlook 11.0 Object Library
 Microsoft.Office.Interop.Outlook.dll
 Microsoft.Office.Interop.Outlook
 
Microsoft PowerPoint 11.0 Object Library
 Microsoft.Office.Interop.PowerPoint.dll
 Microsoft.Office.Interop.PowerPoint
 
Microsoft Project 11.0 Object Library
 Microsoft.Office.Interop.MSProject.dll
 Microsoft.Office.Interop.MSProject
 
Microsoft Publisher 11.0 Object Library
 Microsoft.Office.Interop.Publisher.dll
 Microsoft.Office.Interop.Publisher
 
Microsoft SmartTag 2.0 Type Library
 Microsoft.Office.Interop.SmartTag.dll
 Microsoft.Office.Interop.SmartTag
 
Microsoft Visio 11.0 Type Library
 Microsoft.Office.Interop.Visio.dll
 Microsoft.Office.Interop.Visio
 
Microsoft Visual Basic 6.0 Extensibility
 Microsoft.Vbe.Interop.dll
 Microsoft.Vbe.Interop
 
Microsoft Word 11.0 Object Library
 Microsoft.Office.Interop.Word.dll
 Microsoft.Office.Interop.Word
 
表 2. 具有不同版本号以及用不同密钥签署的 Office 2003 应用程序和组件类型库 
对象库 主 Interop 程序集名 版本号 公钥标记 
Microsoft DAO 3.6 Object Library
 Dao.dll
 10.0.4504.0
 31bf3856ad364e35
 
Microsoft Windows Common Controls 6.0
 Mscomctl.dll
 10.0.4504.0
 31bf3856ad364e35
 
表 3. 由 Visual Studio .NET 2003 提供并包含在 Office 2003 中的 PIA 
对象库 主 Interop 程序集名 版本号 公钥标记 
Microsoft ActiveX Data Objects 2.5†2.8 Library
 Adodb.dll
 7.0.3300.0
 b03f5f7f11d50a3a
 
Microsoft Data Source Interfaces
 Msdatasrc.dll
 7.0.3300.0
 b03f5f7f11d50a3a
 
OLE Automation
 Stdole.dll
 7.0.3300.0
 b03f5f7f11d50a3a
 

安装 Office 2003 之前,在安装 .NET Framework 1.1 时获取 Office 2003 PIA
要在安装 Microsoft Office 2003 时获取 Office PIA,您必须首先安装 Microsoft .NET Framework 版本 1.1。如果在安装 Office 2003 之前未安装 .NET Framework 1.1,则 PIA 不会随 Office 2003 安装进行安装。 

如果在安装了 Office 2003 之后安装 .NET Framework 1.1,则仍然可以通过遵循安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA中概述的步骤来安装 PIA。

如果在安装 Office 2003 之前没有安装 .NET Framework 1.1,则安装 PIA 的选项不会显示在 Office 的自定义安装中。如果首先安装 .NET Framework 1.1,您会在自定义安装中看见选项列表中的 .NET Programmability Support 可用,如图 1 所示。 


按此在新窗口打开图片
图 1. Office 2003 安装中的 .NET Programmability Support 选项


安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA 
如果在安装 Microsoft Office 2003 之后安装 Microsoft .NET Framework 版本 1.1,则要获取 PIA,您必须修改您的 Office 安装

要修改 Office 2003 安装

1.
 在 MicrosoftOffice 2003 Setup 对话框的 Maintenance Mode Options 屏幕中,选择 Add or Remove Features,如图 2 所示,单击 Next。 

 

按此在新窗口打开图片
图 2. 修改 Office 2003 安装程序

 
2.
 选择 Choose advanced customization of applications 复选框并单击 Next。 
 
3.
 展开特定于应用程序的节点。例如,要获取 Microsoft Office Excel 2003 PIA,请展开 Microsoft Office Excel 节点并选择 .NET Programmability Support。单击 .NET Programmability Support 旁边的下拉箭头以选择更新选项,并选取 Run from My Computer,如图 3 所示。请勿选择 Installed on First Use。 

 

按此在新窗口打开图片

图 3. 选择 .NET Programmability Support 的更新选项


注 选择 Run from My Computer 意味着您希望将当前选定功能(例如 .NET Programmability Support)安装并存储在硬盘上。选择 Run all from My Computer 意味着您希望将当前选定功能及其所有子功能都安装并存储在硬盘上。.NET Programmability Support 功能没有子功能,因此无论选择 Run from My Computer 还是 Run all from My Computer,都会得到相同的结果。选择 Installed on First Use 意味着您只希望在首次使用 .NET Programmability Support 功能时,将其安装在硬盘上。在这种情形中,您或许需要用访问用于安装 Office 2003 的光盘或网络服务器,以安装 .NET Programmability Support 功能。
 
4.
 单击 Update。 
 
5.
 要安装其他特定于 Office 2003 应用程序的 PIA,请展开应用程序节点并选择 .NET Programmability Support。 

要安装 Smart Tag .NET Programmability Support、Microsoft Forms 2.0 .NET Programmability Support 或 Microsoft Graph .NET Programmability Support,请展开 Office Tools 节点,并选择适当的 .NET Programmability Support,如图 4 所示。如果是在开发计算机上进行安装,请再次确保选择了 Run from My Computer 。请勿选择 Installed on First Use。 

 

按此在新窗口打开图片
图 4. Office Tools 节点 .NET Programmability Support 选项

 

返回页首
安装 Office 2003 PIA
通过 Office 2003 的“典型安装”来安装 PIA 

如果已具备 Microsoft .NET Framework 版本 1.1,则默认情况下,Microsoft Office 2003 的典型安装会安装以下五个 PIA: 

• Stdole.dll 
 
• Adodb.dll 
 
• Msdatasrc.dll 
 
• Microsoft.Vbe.Interop.dll 
 
• Office.dll 
 

如果具备了 Microsoft Access 或 Microsoft Office Web Components 2003,则默认情况下,还安装有 Mscomctl.dll PIA。

通过 Office 2003 的“完全安装”来安装 PIA 

如果采用完全安装而不是典型安装,则安装 Microsoft Office 2003 时,PIA 会自动安装到全局程序集缓存中。如果要在开发计算机上安装 PIA,应采用完全安装。对于典型安装,可根据需要来安装 PIA。 

注 在开发计算机上,如果需要 PIA,则不应采用 Office 2003 的典型安装。这是存在于 Microsoft Visual Studio .NET 和 Microsoft Visual Studio .NET 2003 中的一个问题,该问题会导致创建一个 Visual Studio£¬即在引用其 PIA 被设置为按需安装的 COM 对象时,会生成 interop 程序集。要避免这个问题,请确保在开始任何开发工作之前,希望引用的 Office 2003 PIA 安装在全局程序集缓存中。对于不会用于开发工作的计算机,对 Office 2003 进行典型安装是完全可以的。自定义 Office 的安装步骤安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA中所述相同。 

查找 Office 2003 PIA 安装位置 

Microsoft Office 2003 主 Interop 程序集 (PIA) 安装在 drive:/WINDOWS/assembly 或 drive:/WINNT/assembly 中的全局程序集缓存中。 

例如,如果 Microsoft Office Excel 2003 PIA 安装在全局程序集缓存中,您会在全局程序集缓存中看到该全局程序集名 Microsoft.Office.Interop.Excel,版本为 11.0.0.0,公钥标记为 71e9bce111e9429c,如图 5 所示。如果您看不到这些信息,那么该 Excel PIA 未被安装。 

按此在新窗口打开图片
图 5. 安装在全局程序集缓存中的 Office 2003 PIA


返回页首
使用 Office 2003 PIA
引用 Office 2003 托管代码 — 类型 PIA 

可以通过使用以下过程来引用一个或多个 Office 2003 PIA。

要引用 Office 2003 托管代码 鈥 类型 PIA

1.
 打开 Microsoft Visual Studio .NET 或 Microsoft Visual Studio .NET 2003 中的托管代码解决方案 (.sln) 文件。 
 
2.
 在 Solution Explorer 窗口中,展开 References 节点。 
 
3.
 右键单击 References, Add References 以打开 Add reference 对话框,如图 6 所示。 
 
4.
 单击 COM 选项卡。 

 

按此在新窗口打开图片
图 6. COM 选项卡处于选中状态的 Add Reference 对话框

 
5.
 在 Component Name 列表中,下滚至需要引用的对象类型库。例如,图 6 中,选定了 Microsoft Office 11.0 Object Library。 
 
6.
 突出显示该组件并单击 Select。您会看到它出现在该选项卡底部的 Selected Components 列表框中。 
 
7.
 单击 OK。您将看到 Microsoft.Office.Core 已添加至 Solution Explorer 中的 References 节点,如图 7 所示。 

 

按此在新窗口打开图片
图 7. 添加至 References 的 Microsoft.Office.Core PIA

 

如果突出显示 Microsoft.Office.Core 引用并在 Properties 窗口中查看其属性,则 Copy Local 属性应被设置为 False。Path 属性应指向其在全局程序集缓存中的位置,并应包括其版本号:11.0.0.0。在 Microsoft Windows XP 操作系统中,它看起来类似于如下所示:

C:\WINDOWS\assembly\GAC\office\11.0.0.0  71e9bce111e9429c\office.dll

要向其他 Office 2003 类型库添加引用,请重复步骤 3 到步骤 7。在步骤 5 中,选择希望引用的应用程序或组件对象类型库。

验证对 Office 2003 PIA 的引用

要知道是否正确地引用了 PIA,请确保该 PIA 的 Copy Local 属性被设置为 False。在 Windows XP 操作系统中,例如,如果要引用 Microsoft Office 2003 Smart Tag PIA,则 Path 属性应当如下显示: 

C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.SmartTag\
    11.0.0.0  71e9bce111e9429c\Microsoft.Office.Interop.SmartTag.dll

如果 Properties 窗口中的 Copy Local 属性被设置为 True,那么您的解决方案引用的不是智能标记 PIA,而是 interop 程序集。因为最佳实践使用正式的 PIA,所以您应当移除 interop 程序集并再次引用 PIA。要移除某个 interop 程序集,请在 References 节点中,右键单击该 interop 程序集名并单击 Remove。

注 仅当您选择了 Run from My Computer 而不是 Installed on First Use 作为该 PIA 的更新选项或对 Office 2003进行了完全安装时,移除 interop 程序集并再次引用 PIA才会奏效。有关此注意事项的详细信息,请参阅安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA。

如果您知道在全局程序集缓存中有 Office 2003 PIA£¬但不知何故您不停地需要某个 interop 程序集而不是 PIA,这可能意味着某些类型库注册已损坏了该特定 PIA 注册。要修复 PIA 注册问题,请参阅 PIA 与 Interop 程序集之间的差异。

PIA 和 Interop 程序集之间的差异

如果您可以在全局程序集缓存中看到 Microsoft Office 2003 PIA£¬但不知何故,在您引用 Office 应用程序或组件对象类型库时不停地需要某个 interop 程序集而不是 PIA,这可能意味着某些其他类型库注册已损坏了该特定 PIA 注册。要修复该 PIA 注册,可以采用以下任意一个步骤: 

注 您在尝试使用以下各选项之前,应当从 Microsoft Office 下载来安装 Microsoft Office 2003 Service Pack 1。 

• 执行 Office 修复。 
 
• 重新安装受影响的 PIA。要进行此操作,请重新运行 Office安装(请参阅安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA)。 
 
• 从全局程序集缓存中,在受影响的 PIA 上运行 RegAsm 工具以对其重新进行注册。例如,在 Office PIA(该 Office PIA 命名空间是 Microsoft.Office.Core)上运行 RegAsm,如下所示: 

%systemroot%\Microsoft.NET\Framework\v1.1.4322\RegAsm.exe
%systemroot%\assembly\GAC\Office\11.0.0.0  71e9bce111e9429c\
    Office.dll

要在 VBIDE PIA(该 VBIDE PIA 命名空间是 Microsoft.Vbe.Interop)上运行 RegAsm: 

%systemroot%\Microsoft.NET\Framework\v1.1.4322\RegAsm.exe
%systemroot%\assembly\GAC\Microsoft.Vbe.Interop\
    11.0.0.0  71e9bce111e9429c\Microsoft.Vbe.Interop.dll

要在 Microsoft Office Excel 2003 PIA(该 Excel PIA 命名空间是 Microsoft.Office.Interop.Excel)上运行 RegAsm: 

%systemroot%\Microsoft.NET\Framework\v1.1.4322\RegAsm.exe
%systemroot%\assembly\GAC\Microsoft.Office.Interop.Excel\
    11.0.0.0  71e9bce111e9429c\ Microsoft.Office.Interop.Excel.dll

要在 Microsoft Office 2003 Smart Tag PIA(该 Smart Tag PIA 命名空间是 Microsoft.Office.Interop.SmartTag)上运行 RegAsm: 

%systemroot%\Microsoft.NET\Framework\v1.1.4322\RegAsm.exe
%systemroot%\assembly\GAC\Microsoft.Office.Interop.SmartTag\
    11.0.0.0  71e9bce111e9429c\Microsoft.Office.Interop.SmartTag.dll

 

避免重新发布 Office 2003 PIAs

不应用解决方案安装程序包尝试以任何方式重新发布 Microsoft Office 2003 PIA,Office 2003 应当是唯一的 Office 2003 PIA 提供机制。可以通过完全、典型或自定义安装将 Office 2003 PIA 自动安装至全局程序集缓存或根据需要安装在最终用户计算机上。 

请确保不要在安装程序中包含 PIA¡£在安装项目中包含 Office 2003 PIA 可能会损坏最终用户计算机上 Office 2003 所有权和 PIA 组件的注册。这会导致在卸载期间,无意间将它们从最终用户计算机上删除。 

例如,当用户安装安装程序包时,打包在安装程序中的 Office 2003 PIA 会改写之前安装的组件的注册。当用户卸载其解决方案时,那些 PIA 注册可能会被损坏,从而使得最终用户计算机不支持这些组件的 .NET 可编程能力。 

注 Microsoft Visual Studio .NET 和 Microsoft Visual Studio .NET 2003 安装项目通常自动在安装程序包中包含一些 PIA。您必须确保最终用户计算机上的安装程序包不包含 Office 2003 PIA。 

避免重新发布 Stdole.dll、Adodb.dll 以及 Msdatasrc.dll PIA

与 Microsoft Office XP 不同,Stdole.dll、Adodb.dll 以及 Msdatasrc.dll PIA 包含在 Microsoft Office 2003 中,如表 3 所示。与对待所有 Office 2003 PIA 一样,不应将其重新发布。有关为何不应重新发布包含在 Office 2003 中的 PIA 的详细信息,请参阅避免重新发布 Office 2003 PIA。

使用 Office XP PIA 和 Office 2003 PIA

PIA 特定于版本,因此应当使用版本与应用程序版本相同的 PIA。例如,如果您希望将自己的 Microsoft Office XP 托管代码解决方案迁移到 Microsoft Office 2003,那么您应当通过 Office 2003 PIA 重新编译该 Office XP 托管代码解决方案。

如果您打算在 Office XP 和 Office 2003 中使用同一个解决方案,那么还应当具备两个不同的安装程序包,一个用于 Office XP,另一个用于 Office 2003¡£Office XP 的 PIA 部署与 Office 2003 的完全不同。有关这些差异的详细信息,请参阅 Office XP PIA 下载中包含的 ReadMe 文件。正如避免重新发布 Office 2003 PIA 中所强调的那样,不应尝试那些意在重新部署 Office 2003 PIA 的解决方案部署方案。如果您的解决方案依赖于 Office 2003 PIA,则它应当使用 Office 2003 来提供 PIA。

返回页首
其他资源
对于有兴趣详细了解利用托管代码为 icrosoft Office 2003 ½ø行编程、PIA 中由 Office 公开的接口和 co-class、类型信息等等的读者,可以参阅以下书籍、文章和下载: 

• Microsoft .NET Development for Microsoft Office (Office/Progmng/Net)
 
• Microsoft Office 2003 Service Pack 1 位于 Microsoft Office Downloads
 
• Microsoft 知识库文章: Information about designing Office XP add-ins and Office 2003 add-ins by using the .NET Framework
 
• Primary Interop Assemblies (PIAs)
 
• A Primer to the Office XP Primary Interop Assemblies 
 
• Working with the Office XP Primary Interop Assemblies 
 
• Office XP Primary Interop Assemblies Known Issues
 
• Microsoft 知识库文章: Microsoft Office XP Primary Interop Assemblies (PIAs) are available for download
 
• Office XP Primary Interop Assemblies (PIAs) download
 
• Coming to grips with the mess of types in the Office PIAs
 
• Excel PIAs: Who you calling Dummy--Dummy?
 
• Programming Microsoft Word 2002 and Excel 2002 with Microsoft Visual C#
 
• Programming Office Applications Using Microsoft Visual C#
 
• Understanding the Excel Object Model from a .NET Developer's Perspective
 
• Understanding the Word Object Model from a .NET Developer's Perspective
 
• An Introduction to Programming Outlook 2003 Using C#
 
• Developing .NET Smart Clients for Microsoft Office XP
 
• Introducing OfficeWiki.net - An experiment in community Office PIA documentation
 
• Problems when a Method and Event name are the same when using C#
 
• Isolating Office Extensions with the COM Shim Wizard
 



Trackback: http://blog.csdn.net/zyg158/archive/2007/09/13/1783160.aspx

posted on 2007-11-07 23:46  投石问路  阅读(3475)  评论(0编辑  收藏  举报