我在VS2015中的控制台应用程序中只添加了两个NuGet包,由于存在一系列依赖关系,我最终将44个包添加到了我的项目中。我可以在下面列出的var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection', function(socket){
socket.on('someEndpoint', function(message){
socket.emit('someClientEndPoint', 'You sent a message to someEndpoint');
});
});
文件中看到它们。
添加到我项目中的软件包列表似乎失控了!
有没有办法获得添加到packages.config的NuGet包的基本依赖关系层次结构列表或报告?
packages.config
答案 0 :(得分:1)
安装软件包时,会弹出一个预览窗口,列出将使用此软件包安装的依赖项。
例如,如果我想安装Microsoft.Azure.Common软件包,单击“安装”按钮时,将弹出以下窗口,告诉我将安装哪些依赖项。
但是如果你想知道这些依赖关系之间的依赖关系层次结构,请尝试运行以下代码来输出依赖关系层次结构。请在编写以下代码之前安装NuGet.Core包。
请参阅: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);
}
}