NuGet储存库如何组织?

时间:2018-12-02 04:14:17

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

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

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

nuget push [PACKAGE_FILENAME] -Source [REPO_ON_THE_NETWORK]

在我推动之前,回购中有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包文件之外的所有内容的。
  • 当我们从存储库中手动删除最近推送的项目时,旧项目会重新出现在NuGet软件包管理器UI中。具有不同组织的文件夹是否会破坏NuGet扫描存储库的功能? NuGet组织项目的方式是否随着时间的推移而有所变化(使用新版本)?
  • 如何在没有包含任何二进制文件的文件夹的情况下成功使用最近推送的项目?

1 个答案:

答案 0 :(得分:2)

从您绘制的层次结构树中,我可以看到一些区别:

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

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

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

希望这会有所帮助。