【问题标题】:Is there a way to view which package source an installed NuGet package is from, in Visual Studio?有没有办法在 Visual Studio 中查看已安装的 NuGet 包来自哪个包源?
【发布时间】:2017-06-27 19:01:07
【问题描述】:

在 Visual Studio 的 NuGet 包管理器中,您可以通过单击包管理器中的“已安装”选项卡来查看解决方案中安装了哪些 NuGet 包。

但是,在同一个包位于多个 NuGet 包源中的情况下,查看特定 NuGet 包来自哪个包源会很有用。有没有办法在 NuGet 包管理器或 VS 中的任何其他地方看到这个?

编辑: 复制以下我的评论以进行澄清:

我正在创建一个使用预先存在的项目作为模型的项目。两个项目都需要引用相同的 Nuget 包,因此我在 Visual Studio 中打开模型项目,打开 Nuget 包管理器,查看其安装的包。模型项目安装了“PackageA”。我打开新项目,为其打开 Nuget 包管理器,然后浏览“PackageA”。我注意到“PackageA”在多个包源中可用。 (这些是我公司内部的,不是 nuget,org)在我的新项目中,我想从与模型项目相同的包源安装“PackageA”

【问题讨论】:

  • 您是否在问如何确定您的哪个依赖项安装了特定的共享子依赖项?
  • 我正在创建一个使用预先存在的项目作为模型的项目。两个项目都需要引用相同的 Nuget 包,因此我在 Visual Studio 中打开模型项目,打开 Nuget 包管理器,查看其安装的包。模型项目安装了“PackageA”。我打开新项目,为其打开 Nuget 包管理器,然后浏览“PackageA”。我注意到“PackageA”在多个包源中可用。 (这些是我公司内部的,不是 nuget,org)在我的新项目中,我想从与模型项目相同的包源安装“PackageA”。
  • 啊,有道理……我个人不知道该怎么做,希望有更多知识的人尽快过来回答。

标签: visual-studio nuget nuget-package


【解决方案1】:

有没有办法在 Visual Studio 中查看已安装的 NuGet 包来自哪个包源?

简单的答案是否定的。这是因为软件包管理器的“已安装”选项卡中有关已在解决方案中安装了哪些 NuGet 软件包的信息基于 packages.config 文件。该文件中只有包ID, version, targetFramework 选项,因此我们可以根据Packages.config 在包管理器中获取NuGet Package Sources 信息。

此外,当我们使用 NuGet 管理我们的包时,NuGet 会从 NuGet 包源下载包并将这些包设置到解决方案文件夹中的Packages 文件夹中。我们接下来要做的是与Packages文件夹中的包相关,而不是NuGet Package Sources(除了NuGet restore,Restore只是从NuGet Package Sources下载包)。因此,我们无法仅根据已下载的包找到包源,而 Package.config 中没有包源信息。

而且,当我们使用NuGet下载包时,NuGet会一一搜索NuGet包源进行下载,NuGet不能聪明的将包源存储在每个包的位置下载。

我想从与模型项目相同的包源安装“PackageA”

要解决这个问题,您可以打开 Packages 文件夹,复制“PackagesA”,将其设置为您要使用的 NuGet 包源,然后从该包源安装“PackageA”,您将获得与模型项目相同的包。

【讨论】:

  • "当我们使用NuGet下载包时,NuGet会一一搜索NuGet Package Sources进行下载"这个很好知道。如果我理解正确,NuGet 对包的来源是不可知的;重要的是包 ID、版本和目标框架。既然如此,我不应该担心从“正确的包源”安装包
【解决方案2】:

你要求的!只用了 4.5 年。

现在(.NET 6 工具)您确实可以配置包源,也称为包源映射:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    相关资源
    最近更新 更多