【问题标题】:Displaying a NuGet package's dependencies显示 NuGet 包的依赖项
【发布时间】:2012-01-27 17:51:16
【问题描述】:

当您显示“管理 NuGet 包”对话框时,它会显示可用的包,其中包含的信息明显多于 Powershell 提供的信息。

特别是,有没有一种方法可以从 powershell 列出可用的包 - 或者只是一个特定的包 - 以及它们所依赖的包,最好是它们的目标版本(范围)?

【问题讨论】:

    标签: powershell nuget


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      是的,有。

      # shows all available packages
      PM> get-package -list
      
       # get single package info
      PM> get-package -list solrnet.nhibernate
      
      # view dependencies
      PM> get-package -list solrnet.nhibernate | select dependencies
      NHibernate:[2.1.2.4000]|CommonServiceLocator:[1.0]|SolrNet:[0.3.1] 
      

      【讨论】:

      • VS2015的列表中好像没有依赖关系
      • 这似乎不是 PowerShell,这看起来像 Visual Studio 中的包管理器
      • @MichaelEakins Visual Studio 中的 NuGet 包管理器窗口是作为 PowerShell 主机实现的,因此它是 PowerShell。我知道这一点,因为大部分都是我写的。
      • @x0n 所以你是说脚本可以在 PowerShell 和 VS 中运行?我问的是原始标签是针对 Powershell 而不是 VS。
      • Get-Package 确实在 PowerShell 中工作——来自 PackageManagement 模块,具有讽刺意味的是,它不是在 PackageManager 控制台中提供同名命令的 NuGet 模块...
      【解决方案3】:

      对于运行 Nuget v3 或更高版本(即 VS2015)的任何人,如果您运行命令 Get-Package,您将收到以下消息:

      此命令/参数组合已被弃用,将在下一版本中删除。请考虑使用替换它的新命令:'Find-Package [-Id]'。

      Find-Package 的文档很好地解释了新命令,您可以看到不再有 -list 参数。不幸的是,似乎这个新的和旧的都不会给你依赖。你可以看到所有返回的属性是这样的:

      Find-Package | Get-Member
      

      哪个会返回:

         TypeName: NuGet.PackageManagement.PowerShellCmdlets.PowerShellRemotePackage
      
      Name              MemberType Definition
      ----              ---------- ----------
      Equals            Method     bool Equals(System.Object obj)
      GetHashCode       Method     int GetHashCode()
      GetType           Method     type GetType()
      ToString          Method     string ToString()
      AllVersions       Property   bool AllVersions {get;set;}
      AsyncLazyVersions Property   Microsoft.VisualStudio.... snip
      Description       Property   string Description {get;set;}
      Id                Property   string Id {get;set;}
      LicenseUrl        Property   string LicenseUrl {get;set;}
      Version           Property   NuGet.SemanticVer.... snip
      Versions          Property   System.Collections.... snip
      

      【讨论】:

      • 这是正确的,但是..你现在如何找到依赖关系?
      • @Noctis 就像我在回答中所说的那样,你现在不能用 Powershell 来做到这一点。不过,没有什么能阻止你分叉cmdlets on GitHub,或者更好的是,提交一个拉取请求
      • For PowerShell PackageManagement Find-Package | Get-Member 在 v5.1 中返回 Microsoft.PackageManagement.Packaging.SoftwareIdentity 类型。这包括IEnumerable<string> 类型的Dependencies 成员。
      • @wolfyuk 也许你记得并且可以提供帮助,但我无法让它工作(使用 VS2019 16.5,在包管理器控制台中执行“$PSVersionTable”返回:“PSVersion 5.1.18362.628 BuildVersion 10.0. 18362.628"。有什么建议吗?
      • @ciuly 抱歉,我不确定我现在能不能帮忙
      【解决方案4】:
      1. 转到https://www.nuget.org/
      2. 搜索你想要的包
      3. 向下滚动到依赖项部分

      【讨论】:

      • OP 已询问如何使用 PowerShell 而不是 Web 浏览器来实现这一目标
      猜你喜欢
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      相关资源
      最近更新 更多