【问题标题】:How are NuGet repos organized?NuGet 存储库是如何组织的?
【发布时间】:2018-12-02 04:14:17
【问题描述】:

我决定将 .NET Standard 类库推送到我工作场所的现有本地 NuGet 存储库。

我通过在 Visual Studio 中构建后自动推送 NuGet 包来做到这一点:

nuget push [PACKAGE_FILENAME] -Source [REPO_ON_THE_NETWORK]

在我推送之前,repo 中有 3 个用于其他项目的预先存在的包。在我推送之后,唯一可见的项目——通过 Visual Studio 中的 NuGet 包管理器 UI——是我刚刚推送的项目。我可以毫无问题地使用来自 NuGet 存储库的项目。

我在网络上查看了文件夹本身,这是我看到的:

[ ] Repo
 |
 |_ [ ] Proj1
 |   |
 |   |_ [ ] v1.0.0
 |   |   |
 |   |   |_ [ ] lib
 |   |   |   |
 |   |   |   |_ [ ] net20
 |   |   |   |   |
 |   |   |   |   |_ .dll
 |   |   |   |   |_ .pdb
 |   |   |   |
 |   |   |   |_ [ ] net46
 |   |   |       |
 |   |   |       |_ .dll
 |   |   |       |_ .pdb
 |   |   |
 |   |   |_ .nupkg
 |   |   |_ .nupkg.sha512
 |   |   |_ .nuspec
 |   |
 |   |_ [ ] v1.0.1
 |       |
 |       |_ .nupkg
 |       |_ .nupkg.sha512
 |       |_ .nuspec
 |
 |_ [ ] MyRecentlyPushedProj
   |
   |_ .nupkg

我有三个问题:

  • 为什么文件夹的组织方式如此不同?请注意一个文件夹如何拥有一个包含实际项目二进制文件的子文件夹,而其他文件夹则没有。另请注意,我最近推出的项目除了 NuGet 包文件外,什么都没有。
  • 当我们从 repo 中手动删除最近推送的项目时,旧项目会重新出现在 NuGet 包管理器 UI 中。不同组织的文件夹是否会影响 NuGet 扫描存储库的能力? NuGet 组织项目的方式是否随着时间的推移发生了变化(更新版本)?
  • 如何在没有包含任何二进制文件的文件夹的情况下成功使用最近推送的项目?

【问题讨论】:

    标签: visual-studio nuget nuget-package nuget-server


    【解决方案1】:

    从你画的层次树中,我可以看出一些不同:

    1. 您的软件包没有版本。
    2. 您的包没有 lib 文件夹。

    现在,有两种使用 NuGet CLI 发布 NuGet 包的方法:pushadd。 主要区别在于 add 用于非 HTTP 包源(如 MSDN 中所述)并且它以分层方式发布包,而 push 并非总是如此(它通常取决于提要的方式初始化)。

    我的建议是您检查我添加的文档,并根据该文档决定是使用一个命令还是另一个命令。据我所知,您应该使用add

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 2011-08-16
      • 2011-04-10
      • 2022-07-13
      相关资源
      最近更新 更多