Add the NuGet.Core package from NuGet and you’ll be in business. We use a NuGet config-file to get the one or more repositories that you might be using and hit them one at a time.
using NuGet; using System; using System.Collections.Generic; using System.Linq; using System.Xml.XPath; namespace LatestVersion { class PackageNotFoundException : Exception { public string PackageName { get; private set; } public PackageNotFoundException(string packageName) : base(String.Format("Package [{0}] not found.", packageName)) { PackageName = packageName; } } class NuGet { string nugetConfigFilepath; public NuGet(string nugetConfigFilepath) { this.nugetConfigFilepath = nugetConfigFilepath; } public IEnumerable<Tuple> GetSources() { XPathNavigator nav; XPathDocument docNav; string xPath; docNav = new XPathDocument(nugetConfigFilepath); nav = docNav.CreateNavigator(); xPath = "/configuration/packageSources/add"; foreach (XPathNavigator xpn in nav.Select(xPath)) { string name = xpn.GetAttribute("key", ""); string uri = xpn.GetAttribute("value", ""); yield return new Tuple(name, uri); } } public SemanticVersion GetLatestVersion(string packageName) { foreach (Tuple source in GetSources()) { string name = source.Item1; string uri = source.Item2; IPackageRepository repo = PackageRepositoryFactory.Default.CreateRepository(uri); // Passing NULL for `versionSpec` will return the latest version. IEnumerable packagesRaw = repo.FindPackages(packageName, null, false, false); IList packages = packagesRaw.ToList(); if (packages.Count == 0) { continue; } return packages[0].Version; } throw new PackageNotFoundException(packageName); } } }