Defining Library Projects

Library projects define a project which contains common functionality you want to share between multiple projects.

Generated projects

Library projects always generate appropriate projects such that other executable projects on the platform can refer and use them.

The appropriate information to reference library projects on any platform is automatically determined by Protobuild, so you don’t need to provide any additional information other than the library name when referencing it.

Basic structure

The smallest definition for an library project you can have is shown below.

<?xml version="1.0" encoding="utf-8"?>
<Project Name="MyLibrary" Path="MyLibrary" Type="Library">
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Compile Include="MyClass.cs" />

The presence of Type="Library" ensures this project is an library project.

Project definition location

All project definitions for your module should be placed under the Build\Module directory and have a .definition extension. The name of the project should match the name of the file as well; for a project called “MyProject”, the project definition should reside at Build\Module\MyProject.definition.


This is the location for all project definitions, including application, console, library, content, include and external projects.

Common sections

All of the sections for library projects are identical to those found in application projects. Refer to the following sections under the Defining Application Projects documentation: