Skip to content

Instantly share code, notes, and snippets.

@panicoenlaxbox
Last active December 21, 2016 09:24
Show Gist options
  • Save panicoenlaxbox/894a904afabf90ecdd6f to your computer and use it in GitHub Desktop.
Save panicoenlaxbox/894a904afabf90ecdd6f to your computer and use it in GitHub Desktop.
View Nuget dependencies hierarchy
using System;
using System.Linq;
using System.Runtime.Versioning;
using NuGet;
namespace ConsoleApplication1
{
/// <summary>
/// View Nuget dependencies hierarchy
/// </summary>
/// <remarks>http://stackoverflow.com/questions/6653715/view-nuget-package-dependency-hierarchy</remarks>
class Program
{
static void Main(string[] args)
{
var frameworkName = new FrameworkName(".NETFramework, Version=4.5");
var repository = PackageRepositoryFactory.Default.CreateRepository(@"D:\tfs\tabconsultores.visualstudio.com\Mss2\Mss2\packages");
var packages =
repository.GetPackages().Where(
p=>p.GetFullName().ToLower().Contains("bootstrap")
|| p.GetCompatiblePackageDependencies(frameworkName).Any(
t => repository.ResolveDependency(t, false, true).GetFullName().ToLower().Contains("bootstrap")));
foreach (IPackage package in packages)
{
PrintPackageInformation(repository, frameworkName, package, 0);
}
Console.ReadLine();
}
private static void PrintPackageInformation(IPackageRepository repository, FrameworkName frameworkName, IPackage package, int level)
{
Console.WriteLine("{0}{1}", new string(' ', level * 3), package);
foreach (PackageDependency dependency in package.GetCompatiblePackageDependencies(frameworkName))
{
IPackage subPackage = repository.ResolveDependency(dependency, false, true);
PrintPackageInformation(repository, frameworkName, subPackage, level + 1);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment