Office primary interop assemblies

To use the features of a Microsoft Office application from an Office project, you must use the primary interop assembly (PIA) for the application. The PIA enables managed code to interact with a Microsoft Office application's COM-based object model.

Note

Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new Office Add-ins model. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

When you create a new Office project, Visual Studio adds references to the PIAs that are required to build the project. In some scenarios, you might need to add references to other PIAs (for example, you can use a feature of Microsoft Office Word in a project for Microsoft Office Excel).

This article describes the following aspects of using the Microsoft Office PIAs in Office projects:

For more information about primary interop assemblies, see Primary interop assemblies.

Separate primary interop assemblies to build and run projects

Visual Studio uses different sets of the PIAs on the development computer. These different sets of assemblies are in the following locations:

  • A folder in the program files directory

    This set of the assemblies is used when you write code and build projects. Visual Studio installs these assemblies automatically.

  • The global assembly cache

    This set of the assemblies is used during some development tasks, such as when you run or debug projects. Visual Studio doesn't install and register these assemblies; you need to do it yourself.

Primary interop assemblies in the program files directory

The PIAs are automatically added to a location in the file system, outside of the global assembly cache, while you install Visual Studio. When you create a new project, Visual Studio automatically adds references to these copies of the PIAs to your project. Visual Studio uses these copies of the PIAs, instead of the assemblies in the global assembly cache, to resolve type references when you develop and build your project.

When different versions of the PIAs are registered in the global assembly cache, you can face several development issues. The added copies of PIAs will help you to avoid such issues.

For Visual Studio 2017 and later, these copies of the PIAs are installed to following shared locations on the development computer:

  • %ProgramFiles%\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\

  • (or %ProgramFiles(x86)%\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\ on 64-bit operating systems)

Note

For older versions of Visual Studio, these PIAs will be installed to the Visual Studio Tools for Office\PIA folder under the %ProgramFiles% folder for that version of Visual Studio. For Example: %ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Visual Studio Tools for Office\PIA\

Primary interop assemblies in the global assembly cache

To perform certain development tasks, the PIAs must be installed and registered in the global assembly cache on the development computer. Typically, the PIAs are installed automatically when you install Office on the development computer. For more information, see Configure a computer to develop Office solutions.

The Office PIAs aren't required on end-user computers to run Office solutions. For more information, see Design and create Office solutions.

Use features of multiple Microsoft Office applications in a single project

Every Office project template in Visual Studio 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 doesn't have a project in Visual Studio, you must add a reference to the required PIAs.

In most cases, you should add references to the PIAs that are installed by Visual Studio under the %ProgramFiles(x86)%\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\ directory. These versions of the assemblies appear on the Framework tab of the Reference Manager dialog box. For more information, see How to: Target Office applications through primary interop assemblies.

If you've installed and registered the PIAs in the global assembly cache, these versions of the assemblies appear on the COM tab of the Reference Manager dialog box. 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've registered different versions of the PIAs 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 Reference Manager 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 applications

The following table lists the primary interop assemblies that are available for Office 2016, Office 2013, and Office 2010.


Office application or component Primary interop assembly name
Microsoft Access 14.0 Object Library

Microsoft Access 15.0 Object Library
Microsoft.Office.Interop.Access.dll
Microsoft Office 14.0 Access Database Engine Object Library

Microsoft Office 15.0 Access Database Engine Object Library
Microsoft.Office.Interop.Access.Dao.dll
Microsoft Excel 14.0 Object Library

Microsoft Excel 15.0 Object Library
Microsoft.Office.Interop.Excel.dll
Microsoft Graph 14.0 Object Library (used by PowerPoint, Access, and Word for graphs)

Microsoft Graph 15.0 Object Library
Microsoft.Office.Interop.Graph.dll
Microsoft InfoPath 2.0 Type Library (for InfoPath 2007 only) Microsoft.Office.Interop.InfoPath.dll
Microsoft InfoPath XML Interop Assembly (for InfoPath 2007 only) Microsoft.Office.Interop.InfoPath.Xml.dll
Microsoft Office 14.0 Object Library (Office shared functionality)

Microsoft Office 15.0 Object Library (Office shared functionality)
office.dll
Microsoft Office Outlook View Control (can be used in Web pages and applications to access your Inbox) Microsoft.Office.Interop.OutlookViewCtl.dll
Microsoft Outlook 14.0 Object Library

Microsoft Outlook 15.0 Object Library
Microsoft.Office.Interop.Outlook.dll
Microsoft PowerPoint 14.0 Object Library

Microsoft PowerPoint 15.0 Object Library
Microsoft.Office.Interop.PowerPoint.dll
Microsoft Project 14.0 Object Library

Microsoft Project 15.0 Object Library
Microsoft.Office.Interop.MSProject.dll
Microsoft Publisher 14.0 Object Library

Microsoft Publisher 15.0 Object Library
Microsoft.Office.Interop.Publisher.dll
Microsoft SharePoint Designer 14.0 Web Object Reference Library Microsoft.Office.Interop.SharePointDesigner.dll
Microsoft SharePoint Designer 14.0 Page Object Reference Library Microsoft.Office.Interop.SharePointDesignerPage.dll
Microsoft Smart Tags 2.0 Type Library Note: Smart tags are deprecated in Excel 2010 and Word 2010. Microsoft.Office.Interop.SmartTag.dll
Microsoft Visio 14.0 Type Library

Microsoft Visio 15.0 Type Library
Microsoft.Office.Interop.Visio.dll
Microsoft Visio 14.0 Save As Web Type Library

Microsoft Visio 15.0 Save As Web Type Library
Microsoft.Office.Interop.Visio.SaveAsWeb.dll
Microsoft Visio 14.0 Drawing Control Type Library

Microsoft Visio 15.0 Drawing Control Type Library
Microsoft.Office.Interop.VisOcx.dll
Microsoft Word 14.0 Object Library

Microsoft Word 15.0 Object Library
Microsoft.Office.Interop.Word.dll
Microsoft Visual Basic for Applications Extensibility 5.3 Microsoft.Vbe.Interop.dll

Binding redirect assemblies

When you install and register the Office PIAs in the global assembly cache (either with Office or by installing the redistributable package for the PIAs), the binding redirect assemblies are also installed only in the global assembly cache. These assemblies ensure that the correct version of the primary interop assemblies is loaded at run time.

For example, when a solution that references an Office 2010 assembly runs on a computer that has the Office 2013 version of the same primary interop assembly, the binding redirect assembly instructs the .NET Framework runtime to load the Office 2013 version of the primary interop assembly.

For more information, see How to: Enable and disable automatic binding redirection.