A Cake (https://cakebuild.net/) add-in that supports Inedo ProGet (https://inedo.com/proget)
Clone or download
kcamp Merge pull request #9 from apprenda/GH-8
GH-8 - Improve user experience when processing very large files
Latest commit 17cf6cf Dec 22, 2017



Cake.ProGet is a Cake add-in that exposes Inedo ProGet functionality to your build scripts.

Build status

Table of Contents

  1. Building
  2. Pre-Requisites
  3. Examples
  4. Contributing
  5. License


This package is built using Cake.Recipe

> .\build.ps1


The Cake.ProGet add-in is intended to be used in conjunction with your organization's ProGet asset repository. The alias methods for the Universal Package functionality will require your build environment to have upack.exe available to it.

There are several ways you can configure your build environment for the upack.exe:

  • Add the installation path to your %PATH% variable.
  • Create environment variable(s) %UPackInstall% with the correct installation path set.
  • Host a local (to your organization) nuget package with the UPack executable and resolve the tool using a #tool directive. i.e., #tool "nuget:?package=YourPackage"

The order of resolution will be (first to last): local tool resolution via #tool, then the %UPackInstall% variable, and finally %PATH% variable. This gives you flexibility in resolving a more specific version in a given build or allowing a system-wide default.


Universal Package

A full example can be found here

#addin "nuget:?package=Cake.ProGet"

    .Description("Creates a universal package")    
    .Does(() => {
        Pack(new UniversalPackagePackSettings(

    .Description("Publishes a universal package")
    .Does(() => {                
        foreach(var item in GetFiles("./*.upack"))
            Push(new UniversalPackagePushSettings(item.FullPath, "http://your-proget-server/upack/packages/"));

ProGet Assets

A full example can be found here

#addin "nuget:?package=Cake.ProGet"

var Version = "0.1.0";

    .Description("Creates a package as a build artifact")
    .Does(() => {
        Zip("./content", "artifact.zip");

    .Description("Publishes a ProGet asset")
    .Does(() => {
        // TODO: this endpoint would be formatted based on your specific hosting environment/naming scheme.
        var assetUri = string.Format("http://your-proget-server/endpoints/asset-dir/content/test-artifact-{0}.zip", Version);
        PushAsset("./artifact.zip", assetUri, new ProGetConfiguration());


If you're thinking about contributing to Cake.ProGet, please make sure you've read the contribution guidelines before creating your first pull request.

  • Fork the repository.
  • Create a branch to work in.
  • Make your feature addition or bug fix.
  • Don't forget the unit tests.
  • Send a pull request.


Copyright © Apprenda Inc., and contributors.

Cake.ProGet is provided as-is under the MIT license. For more information see LICENSE.

Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.