Reputation: 9368
I added just two NuGet packages to my Console application in VS2015 and due to a chain of dependencies, I ended up having 44 packages added to my project. I can see them in the packages.config
file listed below.
The list of packages added to my project seems going out of control!
Is there any way to get a basic dependency hierarchy list or report of the NuGet packages added to packages.config?
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Hyak.Common" version="1.0.2" targetFramework="net461" />
<package id="Microsoft.Azure.Common" version="2.0.4" targetFramework="net461" />
<package id="Microsoft.Azure.Common.Dependencies" version="1.0.0" targetFramework="net461" />
<package id="Microsoft.Azure.KeyVault" version="1.0.0" targetFramework="net461" />
<package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net461" />
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net461" />
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net461" />
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net461" />
<package id="Microsoft.Data.Edm" version="5.6.4" targetFramework="net461" />
<package id="Microsoft.Data.OData" version="5.6.4" targetFramework="net461" />
<package id="Microsoft.Data.Services.Client" version="5.6.4" targetFramework="net461" />
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="3.13.5" targetFramework="net461" />
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net461" />
<package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net461" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net461" />
<package id="System.Collections" version="4.0.11" targetFramework="net461" />
<package id="System.Collections.Concurrent" version="4.0.12" targetFramework="net461" />
<package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="net461" />
<package id="System.Diagnostics.DiagnosticSource" version="4.0.0" targetFramework="net461" />
<package id="System.Globalization" version="4.0.11" targetFramework="net461" />
<package id="System.IO" version="4.1.0" targetFramework="net461" />
<package id="System.Linq" version="4.1.0" targetFramework="net461" />
<package id="System.Net.Http" version="4.1.0" targetFramework="net461" />
<package id="System.Net.Primitives" version="4.0.11" targetFramework="net461" />
<package id="System.Reflection" version="4.1.0" targetFramework="net461" />
<package id="System.Reflection.Extensions" version="4.0.1" targetFramework="net461" />
<package id="System.Runtime" version="4.1.0" targetFramework="net461" />
<package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net461" />
<package id="System.Runtime.InteropServices" version="4.1.0" targetFramework="net461" />
<package id="System.Runtime.Serialization.Json" version="4.0.2" targetFramework="net461" />
<package id="System.Runtime.Serialization.Primitives" version="4.1.1" targetFramework="net461" />
<package id="System.Security.Cryptography.Algorithms" version="4.2.0" targetFramework="net461" />
<package id="System.Security.Cryptography.Encoding" version="4.0.0" targetFramework="net461" />
<package id="System.Security.Cryptography.Primitives" version="4.0.0" targetFramework="net461" />
<package id="System.Security.Cryptography.X509Certificates" version="4.1.0" targetFramework="net461" />
<package id="System.Spatial" version="5.6.4" targetFramework="net461" />
<package id="System.Text.Encoding" version="4.0.11" targetFramework="net461" />
<package id="System.Text.Encoding.Extensions" version="4.0.11" targetFramework="net461" />
<package id="System.Text.RegularExpressions" version="4.1.0" targetFramework="net461" />
<package id="System.Threading" version="4.0.11" targetFramework="net461" />
<package id="System.Threading.Tasks" version="4.0.11" targetFramework="net461" />
<package id="System.Xml.ReaderWriter" version="4.0.11" targetFramework="net461" />
<package id="System.Xml.XDocument" version="4.0.11" targetFramework="net461" />
<package id="WindowsAzure.Storage" version="7.2.1" targetFramework="net461" />
</packages>
Upvotes: 1
Views: 1157
Reputation: 3776
When installing a package, it will pop up a Preview window that list what dependencies will be installed with this package.
For example, if I want to install Microsoft.Azure.Common package, when click Install button, it will pop up following window to tell me what dependencies will be installed.
But if you want to know the dependencies hierarchy between these dependencies, please try run following code to output the dependencies hierarchy. Please install NuGet.Core package before write following code.
Refer to: https://gist.github.com/panicoenlaxbox/894a904afabf90ecdd6f
using NuGet;
using System.Runtime.Versioning;
static void Main(string[] args)
{
var frameworkName = new FrameworkName(".NETFramework, Version=4.5");
var repository = PackageRepositoryFactory.Default.CreateRepository(@"D:\Visual Studio 2015 Project\CAT Case Sample\ApplicationInsights\packages");
var packages =
repository.GetPackages().Where(
p => p.GetFullName().ToLower().Contains("azure") || p.GetCompatiblePackageDependencies(frameworkName).Any(t => repository.ResolveDependency(t, false, true).GetFullName().ToLower().Contains("azure")));
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);
}
}
Upvotes: 1