2016-12-14 61 views
1

我加了短短兩年的NuGet包在VS2015我的控制檯應用程序,並根據相關性的鏈條,我最後不得不加入到我的項目44包。我可以在下面列出的packages.config文件中看到它們。如何在Visual Studio 2015中獲取NuGet包依賴關係報告?

添加到我的項目包的列表似乎要失控了!

有沒有什麼辦法讓加入packages.config的的NuGet包的基本依賴層次列表或報告?

<?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> 

回答

1

安裝軟件包時,它會彈出一個預覽窗口,列出與該軟件包一起安裝的依賴關係。

例如,如果我想安裝Microsoft.Azure.Common包,當點擊安裝按鈕,就會彈出如下窗口,告訴我將要安裝什麼相關性。 enter image description here

但是,如果您想了解這些依賴關係之間的依賴關係層次結構,請嘗試運行以下代碼以輸出依賴關係層次結構。在編寫下面的代碼之前,請先安裝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); 
     } 
    } 
相關問題