Writing this as a quick guide to using your own private Nuget packages hosted in a private feed in VSTS for dotnet core. There is official documentation but I encountered enough issues that I think it’s worth documenting.
1. Install Package Manager into your VSTS
You must install Packagse Manager extension into VSTS. There’s a 30 day free trial, after which you must pay.
Setup your private feed, this will be used to publish your private packages to authenticated VSTS users needing the packages in Visual Studio and in the VSTS builds.
2. Create your Class Library needed as a package
Create the Class Library project in Visual Studio which you need packaged.
NOTE: As of writing in dotnet core you must create as Console App and update to class library in project properties->Application->output type due to issues with templates.
In project properties->Package setup the package metadata. Do not check “Generate Nuget package on build”. Version number will be overridden in VSTS build definition.
3. Setup VSTS Build definition for Nuget Package
Add a new build definition for your Class Library repo/project, based on the template for ASP.NET Core template (sets defaults for project paths and build version number).
- Remove the Publish setups.
- Replace dotnet restore with a Nuget task restore (to allow using your own feed).
- Use a dotnet pack task to build the Nuget package with explicit version number based on build.
- Use a Nuget task to push the build package to the private feed.
4. Reference your private Nuget package in another project
Add a Nuget.config file to your project which needs the private package dependency to use the private Package Manager feed.
You can also add this in your Visual Studio global Nuget.config but makes the feed explicit for others using the same source. You will be prompted to authenticate with VSTS the first time you build to resolve the dependency from the feed.
In the build definition for the project add a Nuget Restore step which references your private feed (standard dotnet restore will not pick up the Nuget.config or authenticate with the private feed).
Tricks and traps (as of writing 2017/07/25):
- Standard agent queue “Hosted” does not support dotnet core, use “Hosted Visual Studio 2017“
- dotnet restore does not support using Nuget.config or authenticating with private feed, use Nuget restore task
- Nuget pack does not support dotnet core packages, use dotnet pack with explicit version option