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.
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 additional PIAs (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 PIAs in Office projects:
For more information about primary interop assemblies, see Primary Interop Assemblies.
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.
These copies of the assemblies are used when you write code and build projects. Visual Studio installs these assemblies automatically.
The global assembly cache.
These copies of the assemblies are used during some development tasks, such as when you run or debug projects that target the .NET Framework 3.5. Visual Studio 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, the PIAs are automatically installed to a location in the file system, outside of the global assembly cache. 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.
These copies of the PIAs help Visual Studio avoid several development issues that can occur when different versions of the PIAs are registered in the global assembly cache.
Visual Studio installs these copies of PIAs to the following locations on the development computer:
%ProgramFiles%\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12
(or %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12 on 64-bit operating systems)
%ProgramFiles%\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14
(or %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14 on 64-bit operating systems)
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 Configuring a Computer to Develop Office Solutions.
End-user computers must also have the PIAs installed and registered in the global assembly cache to run Office solutions that target the .NET Framework 3.5. However, the Office PIAs are not required on end-user computers to run Office solutions that target the .NET Framework 4. For more information, see Designing and Creating Office Solutions.
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 does not 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%\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\ 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 PIAs 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 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 Add Reference dialog box.
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.
The following table lists the primary interop assemblies that are available for Microsoft Office 2010 and the 2007 Microsoft Office system.
Office application or component
Primary interop assembly name
Microsoft Access 12.0 Object Library
Microsoft Access 14.0 Object Library
Microsoft Office 2007 Access Database Engine Object Library
Microsoft Office 14.0 Access Database Engine Object Library
Microsoft Excel 12.0 Object Library
Microsoft Excel 14.0 Object Library
Microsoft Graph 12.0 Object Library (used by PowerPoint, Access, and Word for graphs)
Microsoft Graph 14.0 Object Library
Microsoft InfoPath 2.0 Type Library (for InfoPath 2007 only)
Microsoft InfoPath XML Interop Assembly (for InfoPath 2007 only)
Microsoft Office 12.0 Object Library (Office shared functionality)
Microsoft Office 14.0 Object Library (Office shared functionality)
Microsoft Office Outlook View Control (can be used in Web pages and applications to access your Inbox)
Microsoft Outlook 12.0 Object Library
Microsoft Outlook 14.0 Object Library
Microsoft PowerPoint 12.0 Object Library
Microsoft PowerPoint 14.0 Object Library
Microsoft Project 12.0 Object Library
Microsoft Project 14.0 Object Library
Microsoft Publisher 12.0 Object Library
Microsoft Publisher 14.0 Object Library
Microsoft SharePoint Designer 12.0 Web Object Reference Library
Microsoft SharePoint Designer 14.0 Web Object Reference Library
Microsoft SharePoint Designer 12.0 Page Object Reference Library
Microsoft SharePoint Designer 14.0 Page Object Reference Library
Microsoft Smart Tags 2.0 Type Library
Smart tags are deprecated in Excel 2010 and Word 2010. For more information, see Smart Tags Overview.
Microsoft Visio 12.0 Type Library
Microsoft Visio 14.0 Type Library
Microsoft Visio 12.0 Save As Web Type Library
Microsoft Visio 14.0 Save As Web Type Library
Microsoft Visio 12.0 Drawing Control Type Library
Microsoft Visio 14.0 Drawing Control Type Library
Microsoft Word 12.0 Object Library
Microsoft Word 14.0 Object Library
Microsoft Visual Basic for Applications Extensibility 5.3
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 help make sure that the correct version of the primary interop assemblies are loaded at run time. For example, when a solution that references a 2007 Microsoft Office primary interop assembly runs on a computer that has the Microsoft Office 2010 version of the same primary interop assembly, the binding redirect assembly instructs the .NET Framework runtime to load the Microsoft Office 2010 version of the primary interop assembly. For more information, see Assembly Binding Redirection.
Each binding redirect assembly has a name in the format Policy.11.0.PIA Name.dll or Policy.12.0.PIA Name.dll, such as Policy.11.0.Microsoft.Office.Interop.Excel.dll and Policy.12.0.Microsoft.Office.Interop.Excel.dll.