Office Primary Interop Assemblies
To use the features of a Microsoft Office application from a Visual Studio Tools for Office project, you must use the primary interop assembly for the application. The primary interop assembly enables managed code to interact with a Microsoft Office application's COM-based object model.
When you create a new Visual Studio Tools for Office project, Visual Studio adds references to the primary interop assemblies that are required to build the project. In some scenarios, you might need to add references to additional primary interop assemblies (for example, if you want to use a feature of Microsoft Office Word in a project for Microsoft Office Excel).
This topic describes the following aspects of using the Microsoft Office primary interop assemblies in Visual Studio Tools for Office projects:
Separate primary interop assemblies for building and running projects
Using features of multiple Microsoft Office applications in a single project
Primary interop assemblies for Microsoft Office 2003
Primary interop assemblies for the 2007 Microsoft Office system
For more information about primary interop assemblies, see Primary Interop Assemblies.
Separate Primary Interop Assemblies for Building and Running Projects
Visual Studio Tools for Office uses different sets of the primary interop assemblies on the development computer. These different sets of assemblies are in the following locations:
A folder in the program files directory.
These copies of the assemblies are used when you write code and build projects. Visual Studio Tools for Office installs these assemblies automatically.
The global assembly cache.
These copies of the assemblies are used when you run or debug projects. Visual Studio Tools for Office does not install and register these assemblies; you must do this yourself.
Primary Interop Assemblies in the Program Files Directory
When you install Visual Studio Tools for Office, the primary interop assemblies are automatically installed to a location in the file system, outside of the global assembly cache. When you create a new project, Visual Studio Tools for Office automatically adds references to these copies of the primary interop assemblies to your project. Visual Studio Tools for Office uses these copies of the primary interop assemblies, instead of the assemblies in the global assembly cache, to resolve type references when you develop and build your project.
These copies of the primary interop assemblies help Visual Studio Tools for Office avoid several development issues that can occur when both the 2003 and the 2007 versions of the Office primary interop assemblies are registered in the global assembly cache.
Visual Studio Tools for Office installs these copies of the primary interop assemblies to the following locations on the development computer:
%ProgramFiles%\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office11
%ProgramFiles%\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12
Primary Interop Assemblies in the Global Assembly Cache
To perform most development tasks, you must install and register the primary interop assemblies in the global assembly cache. To do this, perform a Complete installation of Microsoft Office, or install the redistributable package for the primary interop assemblies. For more information, see How to: Install Office Primary Interop Assemblies.
You must have the primary interop assemblies installed and registered in the global assembly cache to perform the following development tasks:
To create a document-level customization project.
To run or debug any Visual Studio Tools for Office project.
End user computers must also have the primary interop assemblies installed and registered in the global assembly cache to run Visual Studio Tools for Office solutions.
Using Features of Multiple Microsoft Office Applications in a Single Project
Every project template in Visual Studio Tools for Office is designed to work with a single Microsoft Office application. To use features in multiple Microsoft Office applications, or to use features in an application or component that does not have a project in Visual Studio Tools for Office, you must add a reference to the required primary interop assemblies.
In most cases, you should add references to the primary interop assemblies that are installed by Visual Studio Tools for Office in the %ProgramFiles% directory. These versions of the assemblies appear on the .NET tab of the Add Reference dialog box. For more information, see How to: Target Office Applications Through Primary Interop Assemblies.
If you have installed and registered the primary interop assemblies in the global assembly cache, these versions of the assemblies appear on the COM tab of the Add Reference dialog box. You should avoid adding references to these versions of the assemblies, because there are some development issues that can occur when you use them. For example, if you have registered both the 2003 and the 2007 versions of the primary interop assemblies in the global assembly cache, your project will automatically bind to the version of the assembly that was registered last—even if you specify a different version of the assembly on the COM tab of the Add Reference dialog box.
Note
Some assemblies are added to a project automatically when an assembly that references them is added. For example, references to the Office.dll and Microsoft.Vbe.Interop.dll assemblies are added automatically when you add a reference to the Word, Excel, Outlook, Microsoft Forms, or Graph assemblies.
Primary Interop Assemblies for Microsoft Office 2003
The following table lists the primary interop assemblies that are available for Microsoft Office 2003.
Office application or component |
Primary interop assembly name |
---|---|
Microsoft Access 11.0 Object Library |
Microsoft.Office.Interop.Access.dll |
Microsoft Excel 11.0 Object Library |
Microsoft.Office.Interop.Excel.dll |
Microsoft FrontPage 6.0 Web Object Reference Library |
Microsoft.Office.Interop.Frontpage.dll |
Microsoft FrontPage 6.0 Page Object Reference Library |
Microsoft.Office.Interop.Frontpageeditor.dll |
Microsoft Graph 11.0 Object Library (used by PowerPoint, Access, and Word for graphs) |
Microsoft.Office.Interop.Graph.dll |
Microsoft Outlook 11.0 Object Library |
Microsoft.Office.Interop.Outlook.dll |
Microsoft Outlook View Control (can be used in Web pages and applications to access your Inbox) |
Microsoft.Office.Interop.OutlookViewCtl.dll |
Microsoft Office Web Components 11.0 (spreadsheet, graph, and pivot table for Web pages) |
Microsoft.Office.Interop.owc11.dll |
Microsoft PowerPoint 11.0 Object Library |
Microsoft.Office.Interop.PowerPoint.dll |
Microsoft Project 11.0 Object Library |
Microsoft.Office.Interop.MSProject.dll |
Microsoft Publisher 11.0 Object Library |
Microsoft.Office.Interop.Publisher.dll |
Microsoft Smart Tags 2.0 Type Library |
Microsoft.Office.Interop.SmartTag.dll |
Microsoft Word 11.0 Object Library |
Microsoft.Office.Interop.Word.dll |
Microsoft Visual Basic for Applications Extensibility 5.3 |
Microsoft.Vbe.Interop.dll |
Microsoft Forms 2.0 Object Library (programmable controls that can be used in applications) |
Microsoft.Vbe.Interop.Forms.dll |
Microsoft Office 11.0 Object Library (Office shared functionality) |
office.dll |
Primary Interop Assemblies for the 2007 Microsoft Office System
The following table lists the primary interop assemblies that are available for the 2007 Microsoft Office system.
Office application or component |
Primary interop assembly name |
---|---|
Microsoft Access 12.0 Object Library |
Microsoft.Office.Interop.Access.dll |
Microsoft Office 2007 Access database engine Object Library |
Microsoft.Office.Interop.Access.Dao.dll |
Microsoft Excel 12.0 Object Library |
Microsoft.Office.Interop.Excel.dll |
Microsoft Graph 12.0 Object Library (used by PowerPoint, Access, and Word for graphs) |
Microsoft.Office.Interop.Graph.dll |
Microsoft InfoPath 2.0 Type Library |
Microsoft.Office.Interop.InfoPath.dll |
Microsoft InfoPath XML Interop Assembly |
Microsoft.Office.Interop.InfoPath.Xml.dll |
Microsoft Outlook 12.0 Object Library |
Microsoft.Office.Interop.Outlook.dll |
Microsoft Office Outlook View Control (can be used in Web pages and applications to access your Inbox) |
Microsoft.Office.Interop.OutlookViewCtl.dll |
Microsoft PowerPoint 12.0 Object Library |
Microsoft.Office.Interop.PowerPoint.dll |
Microsoft Project 12.0 Object Library |
Microsoft.Office.Interop.MSProject.dll |
Microsoft Publisher 12.0 Object Library |
Microsoft.Office.Interop.Publisher.dll |
Microsoft SharePointDesigner 12.0 Web Object Reference Library |
Microsoft.Office.Interop.SharePointDesigner.dll |
Microsoft SharePointDesigner 12.0 Page Object Reference Library |
Microsoft.Office.Interop.SharePointDesignerPage.dll |
Microsoft Smart Tags 2.0 Type Library |
Microsoft.Office.Interop.SmartTag.dll |
Microsoft Visio 12.0 Type Library |
Microsoft.Office.Interop.Visio.dll |
Microsoft Visio 12.0 Save As Web Type Library |
Microsoft.Office.Interop.Visio.SaveAsWeb.dll |
Microsoft Visio 12.0 Drawing Control Type Library |
Microsoft.Office.Interop.VisOcx.dll |
Microsoft Word 12.0 Object Library |
Microsoft.Office.Interop.Word.dll |
Microsoft Visual Basic for Applications Extensibility 5.3 |
Microsoft.Vbe.Interop.dll |
Microsoft Office 12.0 Object Library (Office shared functionality) |
office.dll |
Binding Redirect Assembly for Microsoft Access Object Library |
Policy.11.0.Microsoft.Office.Interop.Access.dll |
Binding Redirect Assembly for Microsoft Excel Object Library |
Policy.11.0.Microsoft.Office.Interop.Excel.dll |
Binding Redirect Assembly for Microsoft Graph Object Library |
Policy.11.0.Microsoft.Office.Interop.Graph.dll |
Binding Redirect Assembly for Microsoft InfoPath Type Library |
Policy.11.0.Microsoft.Office.Interop.InfoPath.dll |
Binding Redirect Assembly for Microsoft InfoPath XML Interop Assembly |
Policy.11.0.Microsoft.Office.Interop.InfoPath.Xml.dll |
Binding Redirect Assembly for Microsoft Outlook Object Library |
Policy.11.0.Microsoft.Office.Interop.Outlook.dll |
Binding Redirect Assembly for Microsoft Outlook View Control |
Policy.11.0.Microsoft.Office.Interop.OutlookViewCtl.dll |
Binding Redirect Assembly for Microsoft PowerPoint Object Library |
Policy.11.0.Microsoft.Office.Interop.PowerPoint.dll |
Binding Redirect Assembly for Microsoft Project Object Library |
Policy.11.0.Microsoft.Office.Interop.MSProject.dll |
Binding Redirect Assembly for Microsoft Publisher Object Library |
Policy.11.0.Microsoft.Office.Interop.Publisher.dll |
Binding Redirect Assembly for Microsoft Smart Tags Type Library |
Policy.11.0.Microsoft.Office.Interop.SmartTag.dll |
Microsoft Visio Type Library |
Policy.11.0.Microsoft.Office.Interop.Visio.dll |
Binding Redirect Assembly for Microsoft Visio Save As Web Type Library |
Policy.11.0.Microsoft.Office.Interop.Visio.SaveAsWeb.dll |
Binding Redirect Assembly for Microsoft Visio Drawing Control Type Library |
Policy.11.0.Microsoft.Office.Interop.VisOcx.dll |
Binding Redirect Assembly for Microsoft Word Object Library |
Policy.11.0.Microsoft.Office.Interop.Word.dll |
Binding Redirect Assembly for Microsoft Visual Basic for Applications Extensibility 5.3 |
Policy.11.0.Microsoft.Vbe.Interop.dll |
Binding Redirect Assembly for Microsoft Office Object Library |
Policy.11.0.office.dll |
Note
The binding redirect assemblies help make sure that the 2007 Microsoft Office version of the primary interop assemblies are loaded at run time. When a Visual Studio Tools for Office solution that references a Microsoft Office 2003 primary interop assembly runs on a computer that has the 2007 Microsoft Office version of the same primary interop assembly, the binding redirect assembly instructs the .NET Framework runtime to load the 2007 Microsoft Office version of the primary interop assembly. For more information, see Assembly Binding Redirection.
See Also
Tasks
How to: Target Office Applications Through Primary Interop Assemblies