Project solutions

Applies to: yesVisual Studio noVisual Studio for Mac

Note

This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here

Visual Studio 2013 provides project templates you can use to create VSTO Add-ins for Microsoft Office Project. You can use VSTO Add-ins to automate Project, extend Project features, or customize the Project user interface (UI).

For more information about VSTO Add-ins, see Get started programming VSTO Add-ins and Architecture of VSTO Add-ins. If you are new to programming with Microsoft Office, see Get started (Office development in Visual Studio).

Applies to: The information in this topic applies to VSTO Add-in projects for Project. For more information, see Features available by Office application and project type.

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.

Automate project by using the project object model

The Project object model exposes many types that you can use to automate Project. These types enable you to write code to accomplish common tasks such as programmatically creating and modifying tasks in a project.

To access the Project object model from a VSTO Add-in, use the Application field of the ThisAddIn class in your project. The Application field returns a Microsoft.Office.Interop.MsProject.Application object that represents the current instance of Project. For more information, see Program VSTO Add-ins.

When you call into the Project object model, you use types that are provided in the primary interop assembly for Project. The primary interop assembly acts as a bridge between the managed code in the VSTO Add-in and the COM object model in Project. All types in the Project primary interop assembly are defined in the Microsoft.Office.Interop.MSProject namespace. For more information about primary interop assemblies, see Office solutions development overview (VSTO) and Office primary interop assemblies.

Use the project object model documentation

For complete information about the Project object model, you can refer to the Project VBA object model reference. The VBA object model reference documents the Project object model as it is exposed to Visual Basic for Applications (VBA) code. For more information, see Project object model reference.

All of the objects and members in the VBA object model reference correspond to types and members in the Project primary interop assembly (PIA). For example, the Calendar object in the VBA object model reference corresponds to the Microsoft.Office.Interop.MSProject.Calendar type in the Project PIA. Although the VBA object model reference provides code examples for most properties, methods, and events, you must translate the VBA code in this reference to Visual Basic or Visual C# if you want to use them in a Project VSTO Add-in project that you create by using Visual Studio.

Note

At this time, there is no reference documentation for the Project primary interop assembly.

Infrastructure types in the project primary interop assembly

As you write code that uses the Project PIA, you might notice many types that are not described in the VBA reference. These additional types help translate objects in the COM-based object model of Project to managed code, are not intended to be used directly in your code.

For more information, see Overview of classes and interfaces in the Office primary interop assemblies.

Customize the user interface of project

You can customize the Project UI in the following ways.

Task For more information
Add custom tabs to the Ribbon in Project Ribbon overview

For more information about customizing the UI of Project and other Microsoft Office applications, see Office UI customization.

See also