PRB: PIA Is Not Found When You Reference an Office Type Library in Visual Studio .NET (823996)



The information in this article applies to:

  • Microsoft Office Professional Edition 2003
  • Microsoft Office Basic Edition 2003
  • Microsoft Office Small Business Edition 2003
  • Microsoft Office Standard Edition 2003
  • Microsoft Office Students and Teachers Edition 2003
  • Microsoft Visual Studio .NET (2003), Professional Edition
  • Microsoft Visual Studio .NET (2003), Enterprise Developer Edition
  • Microsoft Visual Studio .NET (2003), Enterprise Architect Edition
  • Microsoft Visual Studio Tools for the Microsoft Office System version 2003

none:SRX030721605026

SYMPTOMS

When you develop a solution for a Microsoft Office 2003 application by using Microsoft Visual Studio .NET 2003, and you reference an Office object library in that solution, you notice that Visual Studio .NET 2003 creates an Interop Assembly (IA) for the library instead of referencing the Primary Interop Assembly (PIA).

Additionally, there is another symptom of this same problem. When you try to create a new Office project by using Microsoft Visual Studio Tools for the Microsoft Office System 2003, you receive the following error message:

The primary interop assembly required by this project is not installed in the global assembly cache. Microsoft Office 2003 includes the primary interop assemblies for each application as an installation option. For details on installing the Office primary interop assemblies, see the Help topic, "Installing Office Primary Interop Assemblies."

CAUSE

This problem may occur for either of the following reasons:
  • The PIA for the Office object library that you select is not installed in the Global Assembly Cache (GAC).

    To install the PIA in the GAC, you must have the PIA for the Office application or the PIA for the Office component marked as Run from My Computer in Microsoft Office 2003 Setup. In Office Setup, each Office PIA is listed under the corresponding application for the PIA as a .NET Programmability Support feature.
  • The PIA is installed in the GAC, but a registry entry is missing.

    When you select a reference to an Office object library in the development environment, Visual Studio .NET uses the registry to locate the PIA that corresponds to the object library that you select. This registry entry may be removed if the Office object library of the application is registered by a newly installed program or sometimes if the application executable for that object library is run with the regserver switch.

RESOLUTION

To resolve this problem, Microsoft recommends that you run Office Setup from Add or Remove Programs in Control Panel:
  • If the PIA does not appear in the GAC, run Office Setup and then mark the PIA for the application as Run from My Computer. Each Office PIA appears as a .NET Programmability Support feature for the corresponding Office application or for the corresponding Office component.
  • If the PIA does appear in the GAC, run Office Setup and then select the option to repair your Office installation. Alternatively, if the PIA does appear in the GAC, you can run the regasm utility to restore the missing registry entries.
  1. In Control Panel, double-click Administrative Tools, and then select Microsoft .NET Framework 1.1 Configuration.
  2. Select Assembly Cache, and then click Assemblies on the View menu.
  3. Right-click Assembly in the Assemblies list, and then click Properties.

    In the Assembly Properties dialog box, notice the Assembly Name, the Version, and the Public key token.

    For example, if you select the Microsoft Word PIA, you notice the following property values:

    Assembly Name: Microsoft.Office.Interop.Word
    Version: 11.0.0.0
    Public Key Token: 71e9bce111e9429c
  4. Start a Visual Studio .NET command prompt.
  5. At the command prompt, change to the directory where the assembly is located.

    The path is in the following form:

    %windir%\assembly\GAC\<assemblyname>\<version>__<public key token>

    For example, if you use the property values for the Word PIA that are mentioned earlier, you must change to the directory where the Word PIA is located by using the following command:

    cd %windir%\assembly\GAC\Microsoft.Office.Interop.Word\11.0.0.0__71e9bce111e9429c

  6. Run the regasm utility to restore the Word PIA registry entries:

    regasm Microsoft.Office.Interop.Word.dll


Modification Type:MinorLast Reviewed:2/3/2006
Keywords:kbprb KB823996 kbAudDeveloper