ProGet Documentation

ProGet SDK

ProGet 5.0 Beta Documentation Note:

We will be switching to a new, unified SDK that will be used by all of our products. This will greatly simplify development by Inedo, as well as for third-party developers, and will allow a lot of code changes between applications. This will have a very minimal impact for ProGet, as very few users create custom extensions.

The ProGet SDK allows you to create your own custom extensions using .NET code. There are 2 ways to get started with the ProGet SDK:

For a complete type reference of the SDK, please visit the ProGet SDK Reference.

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 extensibility 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.