Back to Top

Extending ProGet

ProGet supports custom behavior to extend certain aspects of the software. This document will cover the steps needed to compile and deploy a custom ProGet extension.

ProGet currently has the following extenisibility points:
Component Base Class Notes
Package Store PackageStore Used by ProGet to access the underlying storage medium for package data. The default implementation uses a directory on disk.
Package Filter PackageFilter Allows all locally-stored ProGet packages to be filtered by additional user-supplied logic.
User Directory UserDirectoryBase Responsible for authenticating users and groups in ProGet. The default implementation uses users and groups stored in the ProGet database, and ProGet also includes user directories for LDAP and Active Directory.

Step 1: Setup

Create a class library project and reference the Inedo ProGet SDK NuGet package. Add the appropriate classes that inherit from the appropriate exensibility point in the table above, and make sure that the class is decorated with the DisplayName and Description attributes.

See the Sample ProGet Extension project on GitHub for sample code for each of these extensibility points.

Step 2: Deployment

ProGet extensions are contained in progetx files, which are standard zip files that contain the extension assembly as well as any supporting assemblies and files. Simply add the compiled extension .dll to a zip file and rename the zip file extension to .progetx. Copy this file to the Extensions directory of your ProGet installation, and it will be loaded the next time ProGet starts.

Note: The .progetx file must have the same file name as the primary assembly it contains; for example, MyExtension.progetx must contain MyExtension.dll.

Verify that your extension has loaded correctly by viewing the Extensions Overview page from within the ProGet Administration section. From there you will see all of the extensions that are loaded in ProGet and the services they provide.